[TOC](Spring XML Bean常用标识符)
如果只是使用了property进行依赖注入的话,需要确保对象提供了默认的构造方法。
<bean id="classA" class="com.spring.circularReferences.ClassA">
<property name="classB" ref="classB"/>
</bean>
《property》、《constructor-arg》中使用的value是为简单对象提供帮助的,ref是为某个对象的引用提供帮助的
《ref》 中可以嵌套 local/parent/bean属性的使用
- local只能指定与当前配置对象在同一个配置文件的对象定义的名称
- parent则只能指定位于当前容器的父容器中定义的对象引用
- bean基本通吃
idref:容器在解析配置的时候就可以帮你检查这个beanName到底是否存在
<property name="newsListenerBeanName">
<idref bean="djNewsListener"/>
<property>
内部《bean》:将这个Bean定义在当前对象内部
<bean id="classB" class="com.spring.circularReferences.ClassB">
<property name="classA" >
<bean class=".......ClassA"/>
<property>
</bean>
这样ClassA对象的实例就只能是ClassB使用
bean的继承的作用: 无需重复配置子类所依赖的项,因为父类中已经配置过了。
Bean的scope
Spring容器singleton/prototype,在web容器中的 global/session/global session/
singleton scope对象定义,在Spring的Ioc容器中只存在一个实例,所有对该对象的引用都将共享这个实例
prototype scope,容器在接到该类型对象请求的时候,会每次都重新生成一个新的对象实例。请求方需要自己负责当前返回对象的后继生命周期的管理工作,包括该对象的销毁。
request scope,XmlWebApplicationContext会为每个HTTP请求创建一个全新的request processor对象
Bean的实例化过程
Spring中依赖注入关系
@Autowired/ 其中initializingBean和DisposableBean接口用来注册这些方法
@Autowired是基于byType自动绑定形式的行为准则
JSR标注依赖注入关系
@Resource、@PostConstruct、@PreDestory 这三种方式
其中 @Resource是基于byName自动绑定形式的行为准则
@PostConstruct/@PreDestory不是服务于依赖注入的,它们主要用于标注对象生命周期管理相关的方法——类似 init-method/destory-method
1. init-method :在对象实例化之后被调用
2. destory-method 在对象销毁之前被调用