时间:2021-05-19
本文实例讲述了spring依赖注入原理与用法。分享给大家供大家参考,具体如下:
一 点睛
控制反转和依赖注入在Spring环境下是等同的概念,控制反转是通过依赖注入实现的。所谓依赖注入指的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。
依赖注入的主要目的是为了解耦,体现一种组合的概念。如果你希望你的类具备某项功能的时候,是继承自一个具有次功能的父类好呢?还是组合另外一个具有此功能的类好呢?答案是不言而喻的,继承一个父类,子类和父类耦合了,组合另外一个类则使耦合度大大降低了。
Spring IoC 容器(ApplicationContext)负责创建Bean,并通过容器将功能Bean注入到你需要的Bean中。
Spring提供使用xml、注解、Java配置、groovy配置实现Bean的创建和注入。
无论是xml配置、注解还是Java配置,都被称为配置元数据,所谓元数据即描述数据的数据。元数据本身不具备任何可执行的能力,只有通过外界代码来对这些元数据进行解析后进行一些有意义的操作。Spring容器解析这些元数据进行Bean初始化,配置和管理依赖。
二 声明Bean的注解
三 注入Bean的注解
四 实战
1 编写功能类的Bean
package com.wisely.highlight_spring4.ch1.di;import org.springframework.stereotype.Service;//使用@Service注解声明当前FunctionService类是Spring管理的一个Bean。//使用@Component、@Service、@Respository、@Controller是等效的,可//根据需要选择@Servicepublic class FunctionService { public String sayHello(String word){ return "Hello " + word +" !"; }}2 使用功能类Bean
package com.wisely.highlight_spring4.ch1.di;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Service //使用@Service注解声明当前UseFunctionService类是Spring管理的一个Beanpublic class UseFunctionService { //使用@Autowired 将FunctionService的实体Bean注入到UseFunctionService中 //让UseFunctionService具备FunctionService的功能,此处使用JSR-330的Inject //注解或者JSR-250的@Resource注解等效 @Autowired FunctionService functionService; public String SayHello(String word){ return functionService.sayHello(word); }}3 配置类
package com.wisely.highlight_spring4.ch1.di;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration //@Configuration声明当前类是一个配置类。//使用@ComponentScan,自动扫描包下所有@Component、@Service、@Respository、@Controller//的类,并注册为Bean@ComponentScan("com.wisely.highlight_spring4.ch1.di")public class DiConfig {}4 运行类
package com.wisely.highlight_spring4.ch1.di;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Main { public static void main(String[] args) { //使用AnnotationConfigApplicationContext作为Spring容器,接收 //一个配置类作为参数 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DiConfig.class); //获得声明配置UseFunctionService的Bean UseFunctionService useFunctionService = context.getBean(UseFunctionService.class); System.out.println(useFunctionService.SayHello("world")); context.close(); }}五 测试
Hello world !
更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例分析了AngularJS的依赖注入。分享给大家供大家参考,具体如下:依赖注入(DI)的好处不再赘言,使用过spring框架的都知道。AngularJS作
一般而言,Spring的依赖注入有三种:构造器注入、setter注入以及接口注入。本文主要讲构造器注入与setter注入。1、构造器注入为了让Spring完成构
Spring的依赖注入Spring主要支持两种依赖注入方式,分别是属性注入和构造函数注入。同时也支持工厂方法注入方式。属性注入属性注入的方式非常简单,即指通过s
一、spring依赖注入使用方式@Autowired是spring框架提供的实现依赖注入的注解,主要支持在set方法,field,构造函数中完成bean注入,注
本文实例讲述了PHP经典设计模式之依赖注入定义与用法。分享给大家供大家参考,具体如下:依赖注入的实质就是把一个类不可能更换的部分和可更换的部分分离开来,通过注入