为Bean定义初始化和销毁操作,只需要使用init-method 和destroy-method参数来配置<bean>元素。init-method属性指定了在初始化Bean时要使用的方法。类似地,destroy-method属性指定了Bean从容器移除之前要调用的方法。
<map>中的<entry>元素由一个键和一个值组成,键和值可以是简单类型,也可以是其他Bean的引用。这些属性将帮助我们指定<entry>的键和值。
<property>元素用于把值或Bean 引用注入到Bean的属性中,
<props> 元素用于定义-个java.util.Properties 类型的集合值,
<prop>元素用于定义<props>集合的一个成员。
使用Bean的ID来引用Bean
调用方法和访问对象的属性
对值进行算术、关系和逻辑运算
正则表达式匹配
集合操作
自动装配(autowiring)有助于减少甚至消除<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bean的依赖关系。
自动检测(autudiscovery)比自动装配更进一步,让Spring能够自动识哪些类需要被配置成Spring Bean,从而减少对Bean元素的使用。
byName——把与Bean的属性具有相同名字(或者ID)的其它Bean自动装配到对应属性中。如果没有跟属性的名字相匹配的Bean,则该属性不进行装配。
byType——把与Bean的属性具有相同类型的其它Bean自动装配到对应属性中。如果没有跟属性的类型相匹配的Bean,则该属性不进行装配。
constructor——把与Bean构造器参数具有相同类型的其他Bean自动装配到Bean构造器的对应参数中。
autodetect——首先尝试使用constructor进行自动装配,如果失败,再尝试使用byType进行自动装配。
byName——约定:为属性自动装配ID与该属性的名字相同的Bean。缺点:需要假设想Bean的名字与其他Bean的属性的名字一样。
byType——缺点:如果Spring寻找到多个Bean,并且类型都匹配,Spring会抛出异常。解决方法:可以为自动装配标识一个首选Bean 或者可以取消某个Bean自动装配的候选资格。
constructor——发现多个Bean匹配某个构造器的参数时,Spring不会尝试猜哪一个Bean更适合自动装配。此外如果一个类有多个构造器,它们都满足自动装配条件时,Spring也不会尝试哪一个构造器更适合使用。
<context:annotation-config>元素告诉Spring使用基于注解的自动装配。Spring支待几种不同的用于自动装配的注解
Spring自带的@Autowired注解。(@Autowired(required=false)说明不一定要装配,null值也可以接受)@Autowired可以装配构造器,方法和属性。
JSR-330的@Inject注解。可以装配构造器,方法和属性。@Inject注解所标注的依赖关系必须存在,如果不存在就会抛出异常。
JSR-250的@Resource注解。