1. Spring装配的三种方案:
(1)自动化装配Bean
(2)Java代码装配Bean
(3)XML装配Bean
2.装配优先选择自动化装配,其次Java代码装配,最后再选择XML装配。
3.自动化装配要点:
(1)对需要装配成Bean的类标注@Component。
(2)使用@ComponentScan开启组建扫描,自动获取标注到@Component的bean。(只扫描和配置类同一个包,若扫描其它包@ComponentScan("package_name"))
也可以在XML中插入下面的一行代码开启组建扫描。
<context:component-scan base-package="package_name"/>
(3)对bean命名(ID)默认为类名首字母小写,若自定义@Component("bean_name")。
(4)对需要注入的构造器或Setter标注@Autowired。
4.Java代码装配要点:
(1)创建配置类JavaConfig,添加@Configuration注解。
(2)用下例格式声明bean:
1 @Bean 2 public class_name a(){ 3 return new A(); //构造函数返回一个对象 4 }
bean的ID同方法名,若自定义则@Bean(name="bean_name")
(3)注入的格式如下:
1 @Bean 2 public class_name b(){ 3 return new B(a()); 4 }
5.XML配置要点
(1)声明<bean>格式如下:
<bean id="bean_name" class="类的路径"/>
(2)注入方法有两种:借助构造器注入,Setter方法注入
①构造器注入:
1 <bean id="bean_name" class="被注入的对象"> 2 <constructor-arg ref="注入的bean" /> 3 </bean>
若注入的是字面量:
1 <bean id="bean_name" class="被注入的对象"> 2 <constructor-arg value="注入的第一个量"/> 3 <constructor-arg value="注入的第二个量"/> 4 ... 5 <!--若存在List类型的量--> 6 <constructor-arg> 7 <list> 8 <value>list中的第一个量</value> 9 <value>list中的第二个量</value> 10 ... 11 </list> 12 </constructor-arg> 13 </bean>
②Setter方法注入:
1 <bean id="bean_name" class="被注入的对象"> 2 <property name="set的某一属性" ref="注入的bean"/> 3 </bean>
若注入的是字面量:
1 <bean id="bean_name" class="被注入的对象"> 2 <property name="属性1" value="注入的第一个量"/> 3 <property name="属性2" value="注入的第二个量"/> 4 ... 5 <property name="list类型的属性3"> 6 <list> 7 <value>注入list的第一个量</value> 8 <value>注入list的第一个量</value> 9 ... 10 </list> 11 </property>