【Spring】2 Spring IoC容器中定义组件依赖的方式
来源:互联网 发布:c语言insert函数 编辑:程序博客网 时间:2024/06/06 01:10
Outlines:
----------------------------------------------------splitter---------------------------------------
Spring IoC容器中定义组件依赖的方式
1) 显式的依赖注入(setter和constructor)
2) 自动化方式(@Autowired和@Resource)
Review:
显示、手动的Bean引用依赖解决方案
在<ref>元素的bean属性里面,Bean名称可以引用IoC容器里面的任意Bean,及时该Bean并没有定义在同一个XML配置文件里也可以引用。
如果引用的是同一个XML文件里面的Bean,应该使用local属性(代替bean属性)指定bean Id;此时XML编辑器可以帮助验证拥有该ID的Bean是否定义在供一个xml文件中。(例如引用完整性)
Problem:
Spring IoC容器中定义组件依赖的方式——显式的依赖注入(setter和constructor)
需要在bean的定义xml中显式定义,property或者constructor-arg
有没有自动化的方式呢?
SolutionA:
在每个bean的定义配置中<bean autowire=””>设置autowire属性。
默认是no,即需要手工指定bean的依赖;
ByName,即容器通过定义的bean id和bean某个属性的名字对应,从而自动定位注入依赖。
ByType,即容器通过bean的某个属性的类型和其他bean的类型对应,从而自动注入依赖。
Constructor,即容器会根据构造器自动选择匹配完成依赖注入。
Autodetect会让容器在byType和constructor两种方式自动选择一种。
另外ByType,Construtor,autodetect有可能会造成注入冲突,引起异常UnsatisfiedDependencyException
一般容器的自动依赖注入特性还和容器的依赖检查特性一起使用。
SolutionB:
自动依赖管理
通过bean的xml定义文件中autowired属性,可以以bean的粒度来控制自动注入依赖。
如果通过java注解@Autowired和@Resource,可以bean中属性的粒度来控制自动依赖注入。同时需要结合AutowiredAnnotationBeanPostProcessor。
1)@Autowired注解可以应用在setter方法和constructor构造器方法。@Autowired注解也可以应用在数据成员上,容器会使用Java反射机制进行自动依赖注入。
使用@Autowired容器会自动进行根据类型(ByType)的自动依赖注入。
可以进一步的控制@Autowired依赖注入,通过@Qualifier注解和自定义注解,可以再根据类型(ByType)的自动依赖注入的同时加上根据名称(ByName)的过滤条件
如果容器无法找到匹配类型进行自动依赖注入,则会抛出异常;触发设置@Autowired的required属性=false。
2)@Resource可以应用在setter方法和constructor构造器方法和数据成员上。
使用@Autowired容器会自动进行根据名称的自动依赖注入。
注意
如果@Autowired注解应用在数组类型,集合List、Set类型、Map类型的属性上,会一次性自动匹配所有类型兼容的依赖,并且完成注入。
@Resource通过名称自动依赖注入,Bean的名称是唯一的,所以不会匹配出多个依赖。
- 【Spring】2 Spring IoC容器中定义组件依赖的方式
- SSH:通过注解(Annotation)的方式在Spring IoC容器中注入依赖
- Spring的IOC容器—依赖注入
- Spring Ioc容器依赖注入
- Filter中访问spring ioc容器中的对象的方式
- Spring源码学习IOC(5):IOC容器的依赖注入
- Spring的 IOC 依赖注入方式
- 【Spring】1 Spring IoC容器中组件管理 基础
- Spring IOC容器-注解的方式
- Spring组件和IOC容器
- 【Spring】Spring IoC容器依赖检查特性
- 深入解读Spring Framework IoC容器(第二弹:依赖注入的方式)
- Spring中的IOC(一):什么是IOC及Spring中实现IOC的方式(依赖注入)
- spring中IOC容器创建对象,对象依赖关系处理
- spring详解:spring IOC依赖注入的几种方式
- spring的Ioc容器
- Spring的IoC容器
- spring的IOC容器
- Ajax的工作原理
- poj 1699 TSP(状态压缩DP) + KMP
- 第六天——考试考试
- DVFS技术详解
- lua源代码文件分析
- 【Spring】2 Spring IoC容器中定义组件依赖的方式
- 修改lua的代码解析
- http抓包工具推荐WSockExpert/httpwatch/HttpAnalyzer/DebugBar
- linux服务器如何检查远程用户登陆状态、时间、ip地址等信息
- VS2010静态库、动态库
- 第03章 面向对象 42final关键字
- Ubuntu下tftp服务搭建
- 【pku 1014】Dividing (多重背包 套模板)
- cmd不是内部或者外部命令