Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)

打印 上一主题 下一主题

主题 859|帖子 859|积分 2577

1、生命周期

**Spring容器的 bean **的生命周期;
1.1 默认生命周期

1.1.1 生命周期


  •   调用构造方法,创建实例对象;
  • set方法,给实例对象赋值;
  • init 初始化方法 初始化对象;(手写并配置到bean上init-method="")
  • 使用容器中的bean对象;
  • destroy 销毁方法 销毁对象 (手写并配置到bean上destroy-method="")
1.1.2 bean 实体类

Truck
  1. @Data
  2. @ToString
  3. public class Truck {
  4. <bean id="person"  autowire="byName">
  5. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  6. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  7.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  8. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  9. </context:component-scan><property name="nickName" value="hauyu"></property>
  10. </bean>//品牌
  11. <bean id="person"  autowire="byName">
  12. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  13. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  14.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  15. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  16. </context:component-scan><property name="nickName" value="hauyu"></property>
  17. </bean>private String brand;
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  19. <context:component-scan base-package="com.kgc.spring.acnocation" >
  20.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  21. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  22. </context:component-scan>//厂商
  23. <bean id="person"  autowire="byName">
  24. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  25. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  26.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  27. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  28. </context:component-scan><property name="nickName" value="hauyu"></property>
  29. </bean>private String factory;
  30. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  31. <context:component-scan base-package="com.kgc.spring.acnocation" >
  32.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  33. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  34. </context:component-scan>//价格
  35. <bean id="person"  autowire="byName">
  36. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  37. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  38.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  39. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  40. </context:component-scan><property name="nickName" value="hauyu"></property>
  41. </bean>private Double price;
  42. <bean id="person"  autowire="byName">
  43. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  44. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  45.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  46. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  47. </context:component-scan><property name="nickName" value="hauyu"></property>
  48. </bean>public Truck() {
  49. <bean id="person"  autowire="byName">
  50. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  51. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  52.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  53. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  54. </context:component-scan><property name="nickName" value="hauyu"></property>
  55. </bean><bean id="person"  autowire="byName">
  56. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  57. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  58.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  59. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  60. </context:component-scan><property name="nickName" value="hauyu"></property>
  61. </bean>//空参构造方法,观察bean什么时候实例化
  62. <bean id="person"  autowire="byName">
  63. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  64. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  65.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  66. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  67. </context:component-scan><property name="nickName" value="hauyu"></property>
  68. </bean><bean id="person"  autowire="byName">
  69. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  70. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  71.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  72. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  73. </context:component-scan><property name="nickName" value="hauyu"></property>
  74. </bean>System.out.println("------ 1.调用构造方法,创建实例对象 ------\n");
  75. <bean id="person"  autowire="byName">
  76. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  77. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  78.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  79. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  80. </context:component-scan><property name="nickName" value="hauyu"></property>
  81. </bean>}
  82. <bean id="person"  autowire="byName">
  83. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  84. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  85.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  86. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  87. </context:component-scan><property name="nickName" value="hauyu"></property>
  88. </bean>public void setBrand(String brand) {
  89. <bean id="person"  autowire="byName">
  90. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  91. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  92.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  93. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  94. </context:component-scan><property name="nickName" value="hauyu"></property>
  95. </bean><bean id="person"  autowire="byName">
  96. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  97. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  98.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  99. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  100. </context:component-scan><property name="nickName" value="hauyu"></property>
  101. </bean>//任意一个set方法,观察bean什么时候注入参数
  102. <bean id="person"  autowire="byName">
  103. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  104. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  105.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  106. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  107. </context:component-scan><property name="nickName" value="hauyu"></property>
  108. </bean><bean id="person"  autowire="byName">
  109. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  110. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  111.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  112. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  113. </context:component-scan><property name="nickName" value="hauyu"></property>
  114. </bean>System.out.println("------ 2.set方法,给实例对象赋值 ------");
  115. <bean id="person"  autowire="byName">
  116. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  117. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  118.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  119. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  120. </context:component-scan><property name="nickName" value="hauyu"></property>
  121. </bean><bean id="person"  autowire="byName">
  122. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  123. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  124.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  125. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  126. </context:component-scan><property name="nickName" value="hauyu"></property>
  127. </bean>this.brand = brand;
  128. <bean id="person"  autowire="byName">
  129. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  130. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  131.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  132. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  133. </context:component-scan><property name="nickName" value="hauyu"></property>
  134. </bean>}
  135. <bean id="person"  autowire="byName">
  136. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  137. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  138.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  139. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  140. </context:component-scan><property name="nickName" value="hauyu"></property>
  141. </bean>public  void  initTruck(){
  142. <bean id="person"  autowire="byName">
  143. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  144. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  145.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  146. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  147. </context:component-scan><property name="nickName" value="hauyu"></property>
  148. </bean><bean id="person"  autowire="byName">
  149. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  150. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  151.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  152. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  153. </context:component-scan><property name="nickName" value="hauyu"></property>
  154. </bean>//init初始化方法,观察bean什么时候初始化
  155. <bean id="person"  autowire="byName">
  156. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  157. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  158.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  159. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  160. </context:component-scan><property name="nickName" value="hauyu"></property>
  161. </bean><bean id="person"  autowire="byName">
  162. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  163. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  164.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  165. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  166. </context:component-scan><property name="nickName" value="hauyu"></property>
  167. </bean>//需要再配置bean的时候,配置init初始化方法
  168. <bean id="person"  autowire="byName">
  169. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  170. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  171.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  172. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  173. </context:component-scan><property name="nickName" value="hauyu"></property>
  174. </bean><bean id="person"  autowire="byName">
  175. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  176. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  177.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  178. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  179. </context:component-scan><property name="nickName" value="hauyu"></property>
  180. </bean>System.out.println("------ 3.Truck init 初始化方法 初始化对象 ------\n");
  181. <bean id="person"  autowire="byName">
  182. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  183. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  184.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  185. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  186. </context:component-scan><property name="nickName" value="hauyu"></property>
  187. </bean><bean id="person"  autowire="byName">
  188. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  189. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  190.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  191. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  192. </context:component-scan><property name="nickName" value="hauyu"></property>
  193. </bean>this.brand = "大运";
  194. <bean id="person"  autowire="byName">
  195. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  196. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  197.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  198. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  199. </context:component-scan><property name="nickName" value="hauyu"></property>
  200. </bean>}
  201. <bean id="person"  autowire="byName">
  202. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  203. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  204.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  205. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  206. </context:component-scan><property name="nickName" value="hauyu"></property>
  207. </bean>public  void  destroyTruck(){
  208. <bean id="person"  autowire="byName">
  209. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  210. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  211.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  212. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  213. </context:component-scan><property name="nickName" value="hauyu"></property>
  214. </bean><bean id="person"  autowire="byName">
  215. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  216. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  217.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  218. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  219. </context:component-scan><property name="nickName" value="hauyu"></property>
  220. </bean>//destory方法,观察bean什么时候销毁
  221. <bean id="person"  autowire="byName">
  222. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  223. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  224.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  225. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  226. </context:component-scan><property name="nickName" value="hauyu"></property>
  227. </bean><bean id="person"  autowire="byName">
  228. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  229. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  230.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  231. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  232. </context:component-scan><property name="nickName" value="hauyu"></property>
  233. </bean>//需要再配置bean的时候,配置destory销毁方法
  234. <bean id="person"  autowire="byName">
  235. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  236. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  237.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  238. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  239. </context:component-scan><property name="nickName" value="hauyu"></property>
  240. </bean><bean id="person"  autowire="byName">
  241. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  242. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  243.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  244. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  245. </context:component-scan><property name="nickName" value="hauyu"></property>
  246. </bean>System.out.println("------ 5.Truck destroy 销毁方法 销毁对象 ------\n");
  247. <bean id="person"  autowire="byName">
  248. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  249. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  250.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  251. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  252. </context:component-scan><property name="nickName" value="hauyu"></property>
  253. </bean>}
  254. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  255. <context:component-scan base-package="com.kgc.spring.acnocation" >
  256.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  257. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  258. </context:component-scan>//这里方法上标注的序号是测试后得来的;
  259. }
复制代码
1.1.3 bean 配置

spring-lifecycle.xml
  1. <bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  2. <bean id="person"  autowire="byName">
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  6. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  7. </context:component-scan><property name="nickName" value="hauyu"></property>
  8. </bean><property name="brand" value="江淮"></property>
  9. <bean id="person"  autowire="byName">
  10. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  13. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  14. </context:component-scan><property name="nickName" value="hauyu"></property>
  15. </bean><property name="factory" value="安徽"></property>
  16. <bean id="person"  autowire="byName">
  17. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  20. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  21. </context:component-scan><property name="nickName" value="hauyu"></property>
  22. </bean><property name="price" value="200000"></property>
  23. </bean>
复制代码
1.1.4 测试
  1. public class TestSpringLifeCycle {
  2. <bean id="person"  autowire="byName">
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  6. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  7. </context:component-scan><property name="nickName" value="hauyu"></property>
  8. </bean>//定义全局容器对象,如果需要关闭容器对象,
  9. <bean id="person"  autowire="byName">
  10. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  13. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  14. </context:component-scan><property name="nickName" value="hauyu"></property>
  15. </bean>//必须使用ApplicationContext的子接口 ConfigurableApplicationContext
  16. <bean id="person"  autowire="byName">
  17. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  20. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  21. </context:component-scan><property name="nickName" value="hauyu"></property>
  22. </bean>//ApplicationContext接口主要各种属性的get方法;
  23. <bean id="person"  autowire="byName">
  24. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  25. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  26.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  27. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  28. </context:component-scan><property name="nickName" value="hauyu"></property>
  29. </bean>//ConfigurableApplicationContext重在对各种属性的配置;
  30. <bean id="person"  autowire="byName">
  31. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  34. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  35. </context:component-scan><property name="nickName" value="hauyu"></property>
  36. </bean>
  37. //<bean id="person"  autowire="byName">
  38. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  41. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  42. </context:component-scan><property name="nickName" value="hauyu"></property>
  43. </bean>private ApplicationContext context;
  44. <bean id="person"  autowire="byName">
  45. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  46. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  47.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  48. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  49. </context:component-scan><property name="nickName" value="hauyu"></property>
  50. </bean>private ConfigurableApplicationContext context;
  51. <bean id="person"  autowire="byName">
  52. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  53. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  54.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  55. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  56. </context:component-scan><property name="nickName" value="hauyu"></property>
  57. </bean>@Before
  58. <bean id="person"  autowire="byName">
  59. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  60. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  61.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  62. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  63. </context:component-scan><property name="nickName" value="hauyu"></property>
  64. </bean>public void initApplicationContext(){
  65. <bean id="person"  autowire="byName">
  66. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  67. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  68.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  69. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  70. </context:component-scan><property name="nickName" value="hauyu"></property>
  71. </bean><bean id="person"  autowire="byName">
  72. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  73. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  74.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  75. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  76. </context:component-scan><property name="nickName" value="hauyu"></property>
  77. </bean>context = new ClassPathXmlApplicationContext("spring-lifecycle.xml");
  78. <bean id="person"  autowire="byName">
  79. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  80. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  81.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  82. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  83. </context:component-scan><property name="nickName" value="hauyu"></property>
  84. </bean>}
  85. <bean id="person"  autowire="byName">
  86. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  87. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  88.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  89. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  90. </context:component-scan><property name="nickName" value="hauyu"></property>
  91. </bean>//测试spring 容器的bean的生命周期,默认和加了处理器两种场景
  92. <bean id="person"  autowire="byName">
  93. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  94. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  95.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  96. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  97. </context:component-scan><property name="nickName" value="hauyu"></property>
  98. </bean>@Test
  99. <bean id="person"  autowire="byName">
  100. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  101. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  102.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  103. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  104. </context:component-scan><property name="nickName" value="hauyu"></property>
  105. </bean>public void  testSpringBeanLifeCycle(){
  106. <bean id="person"  autowire="byName">
  107. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  108. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  109.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  110. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  111. </context:component-scan><property name="nickName" value="hauyu"></property>
  112. </bean><bean id="person"  autowire="byName">
  113. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  114. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  115.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  116. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  117. </context:component-scan><property name="nickName" value="hauyu"></property>
  118. </bean>//从容器中,获取Truck的是实例对象
  119. <bean id="person"  autowire="byName">
  120. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  121. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  122.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  123. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  124. </context:component-scan><property name="nickName" value="hauyu"></property>
  125. </bean><bean id="person"  autowire="byName">
  126. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  127. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  128.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  129. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  130. </context:component-scan><property name="nickName" value="hauyu"></property>
  131. </bean>Truck truck = context.getBean("truck", Truck.class);
  132. <bean id="person"  autowire="byName">
  133. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  134. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  135.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  136. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  137. </context:component-scan><property name="nickName" value="hauyu"></property>
  138. </bean><bean id="person"  autowire="byName">
  139. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  140. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  141.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  142. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  143. </context:component-scan><property name="nickName" value="hauyu"></property>
  144. </bean>//使用对象
  145. <bean id="person"  autowire="byName">
  146. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  147. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  148.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  149. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  150. </context:component-scan><property name="nickName" value="hauyu"></property>
  151. </bean><bean id="person"  autowire="byName">
  152. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  153. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  154.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  155. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  156. </context:component-scan><property name="nickName" value="hauyu"></property>
  157. </bean>System.out.println("------ 4.使用容器中的bean对象"+truck +" ------");
  158. <bean id="person"  autowire="byName">
  159. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  160. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  161.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  162. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  163. </context:component-scan><property name="nickName" value="hauyu"></property>
  164. </bean><bean id="person"  autowire="byName">
  165. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  166. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  167.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  168. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  169. </context:component-scan><property name="nickName" value="hauyu"></property>
  170. </bean>//关闭容器
  171. <bean id="person"  autowire="byName">
  172. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  173. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  174.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  175. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  176. </context:component-scan><property name="nickName" value="hauyu"></property>
  177. </bean><bean id="person"  autowire="byName">
  178. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  179. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  180.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  181. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  182. </context:component-scan><property name="nickName" value="hauyu"></property>
  183. </bean>context.close();
  184. <bean id="person"  autowire="byName">
  185. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  186. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  187.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  188. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  189. </context:component-scan><property name="nickName" value="hauyu"></property>
  190. </bean>}
  191. }
复制代码
输出结果:
  1. //可以得出 spring中bean的 默认生命周期
  2. ------ 1.调用构造方法,创建实例对象 ------
  3. ------ 2.set方法,给实例对象赋值 ------
  4. <bean id="person"  autowire="byName">
  5. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  6. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  7.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  8. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  9. </context:component-scan><property name="nickName" value="hauyu"></property>
  10. </bean>
  11. ------ 3.Truck init 初始化方法 初始化对象 ------
  12. <bean id="person"  autowire="byName">
  13. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  16. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  17. </context:component-scan><property name="nickName" value="hauyu"></property>
  18. </bean>
  19. ------ 4.使用容器中的bean对象Truck(brand=大运, factory=安徽, price=200000.0) ------
  20. <bean id="person"  autowire="byName">
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  23.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  24. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  25. </context:component-scan><property name="nickName" value="hauyu"></property>
  26. </bean>
  27. ------ 5.Truck destroy 销毁方法 销毁对象 ------
复制代码
1.1.5 ApplicationContext 和 ConfigurableApplicationContext

参考博客:ApplicationContext和ConfigurableApplicationContext解析

  • ApplicationContext接口主要 各种属性的get方法;
  • ConfigurableApplicationContext重在对 各种 属性的配置;
1.2 增加后置处理器

1.2.1 生命周期

​<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
<context:component-scan base-package="com.kgc.spring.acnocation" >
        <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
</context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>1.调用构造方法,创建实例对象;
​<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
<context:component-scan base-package="com.kgc.spring.acnocation" >
        <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
</context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>2.set方法,给实例对象赋值;
​<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
<context:component-scan base-package="com.kgc.spring.acnocation" >
        <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
</context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>3-1.后置处理的 before 方法;
​<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
<context:component-scan base-package="com.kgc.spring.acnocation" >
        <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
</context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>3.初始化方法 初始化对象;
​<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
<context:component-scan base-package="com.kgc.spring.acnocation" >
        <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
</context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>3+1.后置处理器的的 after 方法;
​<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
<context:component-scan base-package="com.kgc.spring.acnocation" >
        <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
</context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>4.使用容器中的bean对象;
​<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
<context:component-scan base-package="com.kgc.spring.acnocation" >
        <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
</context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>5.destroy 销毁方法 销毁对象;
1.2.2 后置处理器


  • 要求:必须实现 BeanPostProcessor 接口
  • 自定义 bean 的 后置处理器,对容器中所有的bean统一处理(生效)
  • 要生效的话,必须将此处理器放到容器中(配置到spring的核心配置文件中,增加处理器的实例配置);
注意:当前案例,只对容器中的一个实例处理
MyBeanPostProcessor
  1. public class MyBeanPostProcessor implements BeanPostProcessor {
  2. <bean id="person"  autowire="byName">
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  6. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  7. </context:component-scan><property name="nickName" value="hauyu"></property>
  8. </bean>@Override
  9. <bean id="person"  autowire="byName">
  10. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  13. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  14. </context:component-scan><property name="nickName" value="hauyu"></property>
  15. </bean>public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
  16. <bean id="person"  autowire="byName">
  17. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  20. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  21. </context:component-scan><property name="nickName" value="hauyu"></property>
  22. </bean><bean id="person"  autowire="byName">
  23. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  24. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  25.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  26. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  27. </context:component-scan><property name="nickName" value="hauyu"></property>
  28. </bean>//在容器中bean的实例对象调用 初始化方法 前 自动调用(init方法可以没有,不影响)
  29. <bean id="person"  autowire="byName">
  30. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  31. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  32.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  33. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  34. </context:component-scan><property name="nickName" value="hauyu"></property>
  35. </bean><bean id="person"  autowire="byName">
  36. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  37. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  38.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  39. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  40. </context:component-scan><property name="nickName" value="hauyu"></property>
  41. </bean>//模拟处理容器中的bean,接下来的写法,仅限于当前的用法案例(容器中就 只有一个 卡车实例)
  42. <bean id="person"  autowire="byName">
  43. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  44. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  45.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  46. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  47. </context:component-scan><property name="nickName" value="hauyu"></property>
  48. </bean><bean id="person"  autowire="byName">
  49. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  50. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  51.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  52. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  53. </context:component-scan><property name="nickName" value="hauyu"></property>
  54. </bean>Truck truck = (Truck)bean;
  55. <bean id="person"  autowire="byName">
  56. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  57. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  58.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  59. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  60. </context:component-scan><property name="nickName" value="hauyu"></property>
  61. </bean><bean id="person"  autowire="byName">
  62. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  63. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  64.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  65. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  66. </context:component-scan><property name="nickName" value="hauyu"></property>
  67. </bean>System.out.println("++++++ 容器中的卡车对象 "+truck+"++++++");
  68. <bean id="person"  autowire="byName">
  69. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  70. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  71.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  72. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  73. </context:component-scan><property name="nickName" value="hauyu"></property>
  74. </bean><bean id="person"  autowire="byName">
  75. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  76. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  77.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  78. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  79. </context:component-scan><property name="nickName" value="hauyu"></property>
  80. </bean>System.out.println("++++++ 3-1,后置处理的 before 方法 ++++++");
  81. <bean id="person"  autowire="byName">
  82. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  83. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  84.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  85. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  86. </context:component-scan><property name="nickName" value="hauyu"></property>
  87. </bean><bean id="person"  autowire="byName">
  88. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  89. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  90.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  91. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  92. </context:component-scan><property name="nickName" value="hauyu"></property>
  93. </bean>truck.setBrand("后置处理的before方法");
  94. <bean id="person"  autowire="byName">
  95. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  96. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  97.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  98. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  99. </context:component-scan><property name="nickName" value="hauyu"></property>
  100. </bean><bean id="person"  autowire="byName">
  101. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  102. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  103.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  104. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  105. </context:component-scan><property name="nickName" value="hauyu"></property>
  106. </bean>System.out.println("++++++ 处理后的 卡车对象 "+truck+" ++++++\n");
  107. <bean id="person"  autowire="byName">
  108. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  109. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  110.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  111. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  112. </context:component-scan><property name="nickName" value="hauyu"></property>
  113. </bean><bean id="person"  autowire="byName">
  114. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  115. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  116.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  117. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  118. </context:component-scan><property name="nickName" value="hauyu"></property>
  119. </bean>return truck;
  120. <bean id="person"  autowire="byName">
  121. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  122. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  123.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  124. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  125. </context:component-scan><property name="nickName" value="hauyu"></property>
  126. </bean>}
  127. <bean id="person"  autowire="byName">
  128. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  129. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  130.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  131. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  132. </context:component-scan><property name="nickName" value="hauyu"></property>
  133. </bean>@Override
  134. <bean id="person"  autowire="byName">
  135. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  136. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  137.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  138. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  139. </context:component-scan><property name="nickName" value="hauyu"></property>
  140. </bean>public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
  141. <bean id="person"  autowire="byName">
  142. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  143. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  144.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  145. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  146. </context:component-scan><property name="nickName" value="hauyu"></property>
  147. </bean><bean id="person"  autowire="byName">
  148. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  149. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  150.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  151. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  152. </context:component-scan><property name="nickName" value="hauyu"></property>
  153. </bean>//bean 初始化方法 执行 后,调用此方法处理bean
  154. <bean id="person"  autowire="byName">
  155. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  156. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  157.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  158. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  159. </context:component-scan><property name="nickName" value="hauyu"></property>
  160. </bean><bean id="person"  autowire="byName">
  161. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  162. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  163.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  164. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  165. </context:component-scan><property name="nickName" value="hauyu"></property>
  166. </bean>Truck truck = (Truck)bean;
  167. <bean id="person"  autowire="byName">
  168. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  169. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  170.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  171. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  172. </context:component-scan><property name="nickName" value="hauyu"></property>
  173. </bean><bean id="person"  autowire="byName">
  174. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  175. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  176.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  177. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  178. </context:component-scan><property name="nickName" value="hauyu"></property>
  179. </bean>System.out.println("++++++ 初始化容器中的卡车对象 "+truck+"++++++");
  180. <bean id="person"  autowire="byName">
  181. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  182. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  183.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  184. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  185. </context:component-scan><property name="nickName" value="hauyu"></property>
  186. </bean><bean id="person"  autowire="byName">
  187. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  188. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  189.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  190. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  191. </context:component-scan><property name="nickName" value="hauyu"></property>
  192. </bean>System.out.println("++++++ 3+1,后置处理器的的 after 方法 ++++++");
  193. <bean id="person"  autowire="byName">
  194. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  195. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  196.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  197. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  198. </context:component-scan><property name="nickName" value="hauyu"></property>
  199. </bean><bean id="person"  autowire="byName">
  200. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  201. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  202.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  203. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  204. </context:component-scan><property name="nickName" value="hauyu"></property>
  205. </bean>truck.setBrand("after");
  206. <bean id="person"  autowire="byName">
  207. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  208. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  209.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  210. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  211. </context:component-scan><property name="nickName" value="hauyu"></property>
  212. </bean><bean id="person"  autowire="byName">
  213. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  214. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  215.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  216. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  217. </context:component-scan><property name="nickName" value="hauyu"></property>
  218. </bean>System.out.println("++++++ 初始化后 处理后的 卡车对象 "+truck+" ++++++\n");
  219. <bean id="person"  autowire="byName">
  220. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  221. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  222.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  223. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  224. </context:component-scan><property name="nickName" value="hauyu"></property>
  225. </bean><bean id="person"  autowire="byName">
  226. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  227. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  228.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  229. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  230. </context:component-scan><property name="nickName" value="hauyu"></property>
  231. </bean>return truck;
  232. <bean id="person"  autowire="byName">
  233. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  234. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  235.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  236. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  237. </context:component-scan><property name="nickName" value="hauyu"></property>
  238. </bean>}
  239. }
复制代码
1.2.3  bean 配置

在配置文件中配置 MyBeanPostProcessor;
  1. [/code][size=3]1.2.4 测试[/size]
  2. 跟默认生命周期的测试代码一致;
  3. 输出结果:
  4. [code]------ 1.调用构造方法,创建实例对象 ------------ 2.set方法,给实例对象赋值 ------++++++ 容器中的卡车对象 Truck(brand=江淮, factory=安徽, price=200000.0)++++++<bean id="person"  autowire="byName">
  5. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  6. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  7.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  8. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  9. </context:component-scan><property name="nickName" value="hauyu"></property>
  10. </bean>++++++ 3-1,后置处理的 before 方法 ++++++ ------ 2.set方法,给实例对象赋值 ------++++++ 处理后的 卡车对象 Truck(brand=后置处理的before方法, factory=安徽, price=200000.0) ++++++------ 3.Truck init 初始化方法 初始化对象 ------++++++ 初始化容器中的卡车对象 Truck(brand=大运, factory=安徽, price=200000.0)++++++<bean id="person"  autowire="byName">
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  13.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  14. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  15. </context:component-scan><property name="nickName" value="hauyu"></property>
  16. </bean>++++++ 3+1,后置处理器的的 after 方法 ++++++ ------ 2.set方法,给实例对象赋值 ------++++++ 初始化后 处理后的 卡车对象 Truck(brand=after, factory=安徽, price=200000.0) ++++++------ 4.使用容器中的bean对象Truck(brand=after, factory=安徽,<bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  17. <bean id="person"  autowire="byName">
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  20.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  21. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  22. </context:component-scan><property name="nickName" value="hauyu"></property>
  23. </bean><property name="brand" value="江淮"></property>
  24. <bean id="person"  autowire="byName">
  25. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  28. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  29. </context:component-scan><property name="nickName" value="hauyu"></property>
  30. </bean><property name="factory" value="安徽"></property>
  31. <bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean><property name="price" value="200000"></property>
  38. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  39. <bean id="person"  autowire="byName">
  40. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  41. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  42.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  43. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  44. </context:component-scan><property name="nickName" value="hauyu"></property>
  45. </bean><property name="brand" value="江淮"></property>
  46. <bean id="person"  autowire="byName">
  47. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  48. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  49.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  50. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  51. </context:component-scan><property name="nickName" value="hauyu"></property>
  52. </bean><property name="factory" value="安徽"></property>
  53. <bean id="person"  autowire="byName">
  54. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  55. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  56.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  57. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  58. </context:component-scan><property name="nickName" value="hauyu"></property>
  59. </bean><property name="price" value="200000"></property>
  60. </bean><bean id="person"  autowire="byName">
  61. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  62. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  63.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  64. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  65. </context:component-scan><property name="nickName" value="hauyu"></property>
  66. </bean>------ 5.Truck destroy 销毁方法 销毁对象 ------
复制代码
1.2.3 BeanPostProcesso

参考博客:BeanPostProcessor简介
BeanPostProcessor官方定义为工厂钩子,我们也俗称后置处理器。它允许自定义修改新的bean实例,例如检查标记接口或用代理包装它们。应用程序上下文可以在其bean定义中自动检测BeanPostProcessor bean,并将它们应用于随后创建的任何bean。
BeanPostProcessor 的 前置处理后置处理
![image-20220826150821502](Spring-02 生命周期 + 自动装配(xml) +自动装配(注解).assets/image-20220826150821502.png)
2、自动装配(xml)

2.1 bean 实体类

Person
  1. @Data
  2. public class Person {
  3. <bean id="person"  autowire="byName">
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  6.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  7. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  8. </context:component-scan><property name="nickName" value="hauyu"></property>
  9. </bean>//昵称
  10. <bean id="person"  autowire="byName">
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  13.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  14. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  15. </context:component-scan><property name="nickName" value="hauyu"></property>
  16. </bean>private String nickName;
  17. <bean id="person"  autowire="byName">
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  20.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  21. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  22. </context:component-scan><property name="nickName" value="hauyu"></property>
  23. </bean>//车子
  24. <bean id="person"  autowire="byName">
  25. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  28. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  29. </context:component-scan><property name="nickName" value="hauyu"></property>
  30. </bean>private Car car;
  31. <bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>//房子
  38. <bean id="person"  autowire="byName">
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  41.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  42. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  43. </context:component-scan><property name="nickName" value="hauyu"></property>
  44. </bean>private House house;
  45. }
复制代码
Car
  1. @Data
  2. public class Car {
  3. <bean id="person"  autowire="byName">
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  6.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  7. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  8. </context:component-scan><property name="nickName" value="hauyu"></property>
  9. </bean>//品牌
  10. <bean id="person"  autowire="byName">
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  13.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  14. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  15. </context:component-scan><property name="nickName" value="hauyu"></property>
  16. </bean>private String brand;
  17. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  18. <context:component-scan base-package="com.kgc.spring.acnocation" >
  19.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  20. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  21. </context:component-scan>//厂商
  22. <bean id="person"  autowire="byName">
  23. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  24. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  25.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  26. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  27. </context:component-scan><property name="nickName" value="hauyu"></property>
  28. </bean>private String factory;
  29. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  30. <context:component-scan base-package="com.kgc.spring.acnocation" >
  31.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  32. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  33. </context:component-scan>//价格
  34. <bean id="person"  autowire="byName">
  35. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  36. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  37.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  38. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  39. </context:component-scan><property name="nickName" value="hauyu"></property>
  40. </bean>private Double price;
  41. }
复制代码
House
  1. @Data
  2. public class House {
  3. <bean id="person"  autowire="byName">
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  6.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  7. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  8. </context:component-scan><property name="nickName" value="hauyu"></property>
  9. </bean>//户型
  10. <bean id="person"  autowire="byName">
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  13.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  14. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  15. </context:component-scan><property name="nickName" value="hauyu"></property>
  16. </bean>private  String type;
  17. <bean id="person"  autowire="byName">
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  20.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  21. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  22. </context:component-scan><property name="nickName" value="hauyu"></property>
  23. </bean>//面积
  24. <bean id="person"  autowire="byName">
  25. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  28. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  29. </context:component-scan><property name="nickName" value="hauyu"></property>
  30. </bean>private double area;
  31. <bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>//价格
  38. <bean id="person"  autowire="byName">
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  41.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  42. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  43. </context:component-scan><property name="nickName" value="hauyu"></property>
  44. </bean>private  Integer price;
  45. }
复制代码
2.2 bean 配置 (byType)

autowire="byType":根据属性 的 类型自动装配;
spring-auto.xml
  1. <bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  2. <bean id="person"  autowire="byName">
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  6. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  7. </context:component-scan><property name="nickName" value="hauyu"></property>
  8. </bean><property name="brand" value="江淮"></property>
  9. <bean id="person"  autowire="byName">
  10. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  13. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  14. </context:component-scan><property name="nickName" value="hauyu"></property>
  15. </bean><property name="factory" value="安徽"></property>
  16. <bean id="person"  autowire="byName">
  17. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  20. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  21. </context:component-scan><property name="nickName" value="hauyu"></property>
  22. </bean><property name="price" value="200000"></property>
  23. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  24. <bean id="person"  autowire="byName">
  25. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  28. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  29. </context:component-scan><property name="nickName" value="hauyu"></property>
  30. </bean><property name="brand" value="江淮"></property>
  31. <bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean><property name="factory" value="安徽"></property>
  38. <bean id="person"  autowire="byName">
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  41.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  42. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  43. </context:component-scan><property name="nickName" value="hauyu"></property>
  44. </bean><property name="price" value="200000"></property>
  45. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  46. <bean id="person"  autowire="byName">
  47. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  48. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  49.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  50. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  51. </context:component-scan><property name="nickName" value="hauyu"></property>
  52. </bean><property name="brand" value="江淮"></property>
  53. <bean id="person"  autowire="byName">
  54. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  55. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  56.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  57. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  58. </context:component-scan><property name="nickName" value="hauyu"></property>
  59. </bean><property name="factory" value="安徽"></property>
  60. <bean id="person"  autowire="byName">
  61. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  62. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  63.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  64. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  65. </context:component-scan><property name="nickName" value="hauyu"></property>
  66. </bean><property name="price" value="200000"></property>
  67. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  68. <bean id="person"  autowire="byName">
  69. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  70. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  71.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  72. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  73. </context:component-scan><property name="nickName" value="hauyu"></property>
  74. </bean><property name="brand" value="江淮"></property>
  75. <bean id="person"  autowire="byName">
  76. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  77. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  78.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  79. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  80. </context:component-scan><property name="nickName" value="hauyu"></property>
  81. </bean><property name="factory" value="安徽"></property>
  82. <bean id="person"  autowire="byName">
  83. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  84. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  85.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  86. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  87. </context:component-scan><property name="nickName" value="hauyu"></property>
  88. </bean><property name="price" value="200000"></property>
  89. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  90. <bean id="person"  autowire="byName">
  91. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  92. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  93.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  94. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  95. </context:component-scan><property name="nickName" value="hauyu"></property>
  96. </bean><property name="brand" value="江淮"></property>
  97. <bean id="person"  autowire="byName">
  98. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  99. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  100.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  101. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  102. </context:component-scan><property name="nickName" value="hauyu"></property>
  103. </bean><property name="factory" value="安徽"></property>
  104. <bean id="person"  autowire="byName">
  105. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  106. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  107.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  108. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  109. </context:component-scan><property name="nickName" value="hauyu"></property>
  110. </bean><property name="price" value="200000"></property>
  111. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  112. <bean id="person"  autowire="byName">
  113. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  114. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  115.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  116. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  117. </context:component-scan><property name="nickName" value="hauyu"></property>
  118. </bean><property name="brand" value="江淮"></property>
  119. <bean id="person"  autowire="byName">
  120. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  121. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  122.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  123. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  124. </context:component-scan><property name="nickName" value="hauyu"></property>
  125. </bean><property name="factory" value="安徽"></property>
  126. <bean id="person"  autowire="byName">
  127. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  128. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  129.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  130. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  131. </context:component-scan><property name="nickName" value="hauyu"></property>
  132. </bean><property name="price" value="200000"></property>
  133. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  134. <bean id="person"  autowire="byName">
  135. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  136. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  137.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  138. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  139. </context:component-scan><property name="nickName" value="hauyu"></property>
  140. </bean><property name="brand" value="江淮"></property>
  141. <bean id="person"  autowire="byName">
  142. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  143. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  144.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  145. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  146. </context:component-scan><property name="nickName" value="hauyu"></property>
  147. </bean><property name="factory" value="安徽"></property>
  148. <bean id="person"  autowire="byName">
  149. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  150. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  151.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  152. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  153. </context:component-scan><property name="nickName" value="hauyu"></property>
  154. </bean><property name="price" value="200000"></property>
  155. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  156. <bean id="person"  autowire="byName">
  157. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  158. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  159.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  160. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  161. </context:component-scan><property name="nickName" value="hauyu"></property>
  162. </bean><property name="brand" value="江淮"></property>
  163. <bean id="person"  autowire="byName">
  164. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  165. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  166.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  167. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  168. </context:component-scan><property name="nickName" value="hauyu"></property>
  169. </bean><property name="factory" value="安徽"></property>
  170. <bean id="person"  autowire="byName">
  171. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  172. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  173.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  174. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  175. </context:component-scan><property name="nickName" value="hauyu"></property>
  176. </bean><property name="price" value="200000"></property>
  177. </bean>
复制代码
2.3 测试
  1. public class TestSpringAutoUserXml {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>private ApplicationContext context;<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>@Before<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>public void initApplicationContext(){<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean><bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean>context = new ClassPathXmlApplicationContext("spring-auto.xml");<bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>}<bean id="person"  autowire="byName">
  38. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  41. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  42. </context:component-scan><property name="nickName" value="hauyu"></property>
  43. </bean>@Test<bean id="person"  autowire="byName">
  44. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  45. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  46.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  47. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  48. </context:component-scan><property name="nickName" value="hauyu"></property>
  49. </bean>public  void testSpringAuto(){<bean id="person"  autowire="byName">
  50. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  51. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  52.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  53. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  54. </context:component-scan><property name="nickName" value="hauyu"></property>
  55. </bean><bean id="person"  autowire="byName">
  56. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  57. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  58.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  59. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  60. </context:component-scan><property name="nickName" value="hauyu"></property>
  61. </bean>Person person = context.getBean("person", Person.class);<bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  62. <bean id="person"  autowire="byName">
  63. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  64. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  65.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  66. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  67. </context:component-scan><property name="nickName" value="hauyu"></property>
  68. </bean><property name="brand" value="江淮"></property>
  69. <bean id="person"  autowire="byName">
  70. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  71. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  72.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  73. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  74. </context:component-scan><property name="nickName" value="hauyu"></property>
  75. </bean><property name="factory" value="安徽"></property>
  76. <bean id="person"  autowire="byName">
  77. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  78. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  79.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  80. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  81. </context:component-scan><property name="nickName" value="hauyu"></property>
  82. </bean><property name="price" value="200000"></property>
  83. </bean><bean id="person"  autowire="byName">
  84. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  85. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  86.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  87. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  88. </context:component-scan><property name="nickName" value="hauyu"></property>
  89. </bean>//使用对象<bean id="person"  autowire="byName">
  90. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  91. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  92.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  93. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  94. </context:component-scan><property name="nickName" value="hauyu"></property>
  95. </bean><bean id="person"  autowire="byName">
  96. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  97. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  98.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  99. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  100. </context:component-scan><property name="nickName" value="hauyu"></property>
  101. </bean>System.out.println("容器中的person对象:"+person);<bean id="person"  autowire="byName">
  102. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  103. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  104.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  105. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  106. </context:component-scan><property name="nickName" value="hauyu"></property>
  107. </bean>}}
复制代码
输出结果:
  1. 容器中的person对象:Person(<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  8. <context:component-scan base-package="com.kgc.spring.acnocation" >
  9.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  10. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  11. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  12. <context:component-scan base-package="com.kgc.spring.acnocation" >
  13.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  14. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  15. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  16. <context:component-scan base-package="com.kgc.spring.acnocation" >
  17.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  18. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  19. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  20. <context:component-scan base-package="com.kgc.spring.acnocation" >
  21.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  22. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  23. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  24. <context:component-scan base-package="com.kgc.spring.acnocation" >
  25.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  26. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  27. </context:component-scan>nickName=huayu,<bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  28. <bean id="person"  autowire="byName">
  29. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  30. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  31.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  32. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  33. </context:component-scan><property name="nickName" value="hauyu"></property>
  34. </bean><property name="brand" value="江淮"></property>
  35. <bean id="person"  autowire="byName">
  36. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  37. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  38.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  39. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  40. </context:component-scan><property name="nickName" value="hauyu"></property>
  41. </bean><property name="factory" value="安徽"></property>
  42. <bean id="person"  autowire="byName">
  43. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  44. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  45.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  46. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  47. </context:component-scan><property name="nickName" value="hauyu"></property>
  48. </bean><property name="price" value="200000"></property>
  49. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  50. <bean id="person"  autowire="byName">
  51. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  52. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  53.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  54. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  55. </context:component-scan><property name="nickName" value="hauyu"></property>
  56. </bean><property name="brand" value="江淮"></property>
  57. <bean id="person"  autowire="byName">
  58. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  59. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  60.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  61. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  62. </context:component-scan><property name="nickName" value="hauyu"></property>
  63. </bean><property name="factory" value="安徽"></property>
  64. <bean id="person"  autowire="byName">
  65. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  66. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  67.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  68. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  69. </context:component-scan><property name="nickName" value="hauyu"></property>
  70. </bean><property name="price" value="200000"></property>
  71. </bean> car=Car(brand=Bnw520, factory=华晨, price=450000.0),<bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  72. <bean id="person"  autowire="byName">
  73. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  74. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  75.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  76. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  77. </context:component-scan><property name="nickName" value="hauyu"></property>
  78. </bean><property name="brand" value="江淮"></property>
  79. <bean id="person"  autowire="byName">
  80. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  81. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  82.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  83. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  84. </context:component-scan><property name="nickName" value="hauyu"></property>
  85. </bean><property name="factory" value="安徽"></property>
  86. <bean id="person"  autowire="byName">
  87. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  88. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  89.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  90. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  91. </context:component-scan><property name="nickName" value="hauyu"></property>
  92. </bean><property name="price" value="200000"></property>
  93. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  94. <bean id="person"  autowire="byName">
  95. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  96. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  97.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  98. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  99. </context:component-scan><property name="nickName" value="hauyu"></property>
  100. </bean><property name="brand" value="江淮"></property>
  101. <bean id="person"  autowire="byName">
  102. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  103. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  104.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  105. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  106. </context:component-scan><property name="nickName" value="hauyu"></property>
  107. </bean><property name="factory" value="安徽"></property>
  108. <bean id="person"  autowire="byName">
  109. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  110. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  111.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  112. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  113. </context:component-scan><property name="nickName" value="hauyu"></property>
  114. </bean><property name="price" value="200000"></property>
  115. </bean> house=House(type=三室一厅, area=96.0, price=2800000)<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  116. <context:component-scan base-package="com.kgc.spring.acnocation" >
  117.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  118. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  119. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  120. <context:component-scan base-package="com.kgc.spring.acnocation" >
  121.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  122. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  123. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  124. <context:component-scan base-package="com.kgc.spring.acnocation" >
  125.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  126. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  127. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  128. <context:component-scan base-package="com.kgc.spring.acnocation" >
  129.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  130. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  131. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  132. <context:component-scan base-package="com.kgc.spring.acnocation" >
  133.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  134. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  135. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  136. <context:component-scan base-package="com.kgc.spring.acnocation" >
  137.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  138. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  139. </context:component-scan>)
复制代码
2.4 bean 配置 (多个同类型bean)

bean 配置:
其他不变,多增加一个Car类型的实例bean;
  1. <bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  2. <bean id="person"  autowire="byName">
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  5.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  6. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  7. </context:component-scan><property name="nickName" value="hauyu"></property>
  8. </bean><property name="brand" value="江淮"></property>
  9. <bean id="person"  autowire="byName">
  10. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  11. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  12.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  13. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  14. </context:component-scan><property name="nickName" value="hauyu"></property>
  15. </bean><property name="factory" value="安徽"></property>
  16. <bean id="person"  autowire="byName">
  17. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  20. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  21. </context:component-scan><property name="nickName" value="hauyu"></property>
  22. </bean><property name="price" value="200000"></property>
  23. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  24. <bean id="person"  autowire="byName">
  25. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  28. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  29. </context:component-scan><property name="nickName" value="hauyu"></property>
  30. </bean><property name="brand" value="江淮"></property>
  31. <bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean><property name="factory" value="安徽"></property>
  38. <bean id="person"  autowire="byName">
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  41.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  42. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  43. </context:component-scan><property name="nickName" value="hauyu"></property>
  44. </bean><property name="price" value="200000"></property>
  45. </bean>
复制代码
测试,报错信息:
No qualifying bean of type 'com.kgc.spring.auto.Car' available: expected single matching bean but found 2: car,carNew
总结:autowire="byType"  当有多个相同类型的bean时无法确定要装配的 bean;
2.5 bean 配置(byName)

其他配置信息不变,设置 autowire="byName" ,根据 属性 的 名字 自动装配;
  1. <bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>
复制代码
测试输出结果:
  1. 容器中的person对象:Person(<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  8. <context:component-scan base-package="com.kgc.spring.acnocation" >
  9.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  10. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  11. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  12. <context:component-scan base-package="com.kgc.spring.acnocation" >
  13.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  14. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  15. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  16. <context:component-scan base-package="com.kgc.spring.acnocation" >
  17.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  18. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  19. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  20. <context:component-scan base-package="com.kgc.spring.acnocation" >
  21.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  22. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  23. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  24. <context:component-scan base-package="com.kgc.spring.acnocation" >
  25.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  26. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  27. </context:component-scan>nickName=huayu,<bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  28. <bean id="person"  autowire="byName">
  29. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  30. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  31.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  32. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  33. </context:component-scan><property name="nickName" value="hauyu"></property>
  34. </bean><property name="brand" value="江淮"></property>
  35. <bean id="person"  autowire="byName">
  36. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  37. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  38.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  39. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  40. </context:component-scan><property name="nickName" value="hauyu"></property>
  41. </bean><property name="factory" value="安徽"></property>
  42. <bean id="person"  autowire="byName">
  43. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  44. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  45.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  46. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  47. </context:component-scan><property name="nickName" value="hauyu"></property>
  48. </bean><property name="price" value="200000"></property>
  49. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  50. <bean id="person"  autowire="byName">
  51. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  52. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  53.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  54. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  55. </context:component-scan><property name="nickName" value="hauyu"></property>
  56. </bean><property name="brand" value="江淮"></property>
  57. <bean id="person"  autowire="byName">
  58. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  59. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  60.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  61. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  62. </context:component-scan><property name="nickName" value="hauyu"></property>
  63. </bean><property name="factory" value="安徽"></property>
  64. <bean id="person"  autowire="byName">
  65. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  66. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  67.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  68. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  69. </context:component-scan><property name="nickName" value="hauyu"></property>
  70. </bean><property name="price" value="200000"></property>
  71. </bean> car=Car(brand=Bnw520, factory=华晨, price=450000.0),<bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  72. <bean id="person"  autowire="byName">
  73. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  74. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  75.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  76. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  77. </context:component-scan><property name="nickName" value="hauyu"></property>
  78. </bean><property name="brand" value="江淮"></property>
  79. <bean id="person"  autowire="byName">
  80. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  81. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  82.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  83. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  84. </context:component-scan><property name="nickName" value="hauyu"></property>
  85. </bean><property name="factory" value="安徽"></property>
  86. <bean id="person"  autowire="byName">
  87. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  88. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  89.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  90. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  91. </context:component-scan><property name="nickName" value="hauyu"></property>
  92. </bean><property name="price" value="200000"></property>
  93. </bean><bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
  94. <bean id="person"  autowire="byName">
  95. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  96. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  97.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  98. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  99. </context:component-scan><property name="nickName" value="hauyu"></property>
  100. </bean><property name="brand" value="江淮"></property>
  101. <bean id="person"  autowire="byName">
  102. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  103. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  104.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  105. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  106. </context:component-scan><property name="nickName" value="hauyu"></property>
  107. </bean><property name="factory" value="安徽"></property>
  108. <bean id="person"  autowire="byName">
  109. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  110. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  111.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  112. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  113. </context:component-scan><property name="nickName" value="hauyu"></property>
  114. </bean><property name="price" value="200000"></property>
  115. </bean> house=House(type=三室一厅, area=96.0, price=2800000)<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  116. <context:component-scan base-package="com.kgc.spring.acnocation" >
  117.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  118. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  119. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  120. <context:component-scan base-package="com.kgc.spring.acnocation" >
  121.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  122. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  123. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  124. <context:component-scan base-package="com.kgc.spring.acnocation" >
  125.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  126. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  127. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  128. <context:component-scan base-package="com.kgc.spring.acnocation" >
  129.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  130. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  131. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  132. <context:component-scan base-package="com.kgc.spring.acnocation" >
  133.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  134. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  135. </context:component-scan><context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  136. <context:component-scan base-package="com.kgc.spring.acnocation" >
  137.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  138. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  139. </context:component-scan>)
复制代码
总结:

  • byType:根据类型自动装配:

    • 根据实体属性的  类型,到容器中,根据  bean类型  进行唯一匹配,如果可以匹配到对应类型的bean的实例,就会执行自动装配, 如果不能唯一匹配(同类型的bean有多个),会报错;

  • byName: 根据名称自动装配:

    • 根据属性的  属性名,到容器中,根据  bean的id  属性值,进行唯一匹配,如果能够成功匹配,执行自动装配, 如果匹配不到,不执行自动装配,实体属性为null;

3、自动装配 (注解)

3.1 注解


  • @Component <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
    <context:component-scan base-package="com.kgc.spring.acnocation" >
            <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
    </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan>普通组件注解;
  • @Repository<bean id="person"  autowire="byName">
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
        <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
    </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan><property name="nickName" value="hauyu"></property>
    </bean>   持久层注解
  • @Service<bean id="truck"  init-method="initTruck" destroy-method="destroyTruck">
    <bean id="person"  autowire="byName">
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
        <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
    </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan><property name="nickName" value="hauyu"></property>
    </bean><property name="brand" value="江淮"></property>
    <bean id="person"  autowire="byName">
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
        <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
    </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan><property name="nickName" value="hauyu"></property>
    </bean><property name="factory" value="安徽"></property>
    <bean id="person"  autowire="byName">
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
        <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
    </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan><property name="nickName" value="hauyu"></property>
    </bean><property name="price" value="200000"></property>
    </bean>  业务层注解
  • @Controller<bean id="person"  autowire="byName">
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
        <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
    </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan><property name="nickName" value="hauyu"></property>
    </bean><bean id="person"  autowire="byName">
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
    <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
        <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
    </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
    </context:component-scan><property name="nickName" value="hauyu"></property>
    </bean> 控制层注解
3.3.1 注解的原理

默认情况下:spring自动将分层组件(@Controller,@Service,@Repository,@component)标识的类(不是接口),自动创建实例对象放入容器中,使用bean的标识id值为 对应类名首字母小写  就相当于,帮我们手动添加了配置 :
...
3.1.2 自定义id 属性

如果不想使用默认的类名首字母小写,我们可以使用注解的value属性执行一个自定义的id值;
比如:@Service(value="自定义的id值"),注解只有value属性,可以省略value执行,简化为@Service("自定义的id值")
3.1.3  分层组件的目的

分层组件的目的,就仅仅是为了方便开发人员明确当前注解所在的类所对应的角色,在使用上,建议使用,按照官方定义的使用,防止模糊不清;在springMVC框架中@Controller有特殊含义;
3.2 配置文件

spring创建容器对象时,如果解析到 component-scan 组件扫描配置,会将base-package指定的基包(父包)及其子包所有增加了分层组件的类,自动创建实例,放进容器中;
配置文件
  1. <bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>   
复制代码
3.3 默认id属性 测试

3.3.1 实体
  1. @Componentpublic class User {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>//用户名<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>@Value("huayu") //@Value()  自动装配参数<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>private  String userName;<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>//用户密码<bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean>@Value("123")<bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>private String userPwd;}
复制代码
3.3.2 测试
  1. @Testpublic  void testSpringAutoUserAnnotation(){<context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  2. <context:component-scan base-package="com.kgc.spring.acnocation" >
  3.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  4. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  5. </context:component-scan><bean id="person"  autowire="byName">
  6. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  7. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  8.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  9. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  10. </context:component-scan><property name="nickName" value="hauyu"></property>
  11. </bean>User user = context.getBean("user", User.class);<bean id="person"  autowire="byName">
  12. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  13. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  14.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  15. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  16. </context:component-scan><property name="nickName" value="hauyu"></property>
  17. </bean>   System.out.println(user);<bean id="person"  autowire="byName">
  18. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  19. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  20.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  21. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  22. </context:component-scan><property name="nickName" value="hauyu"></property>
  23. </bean>//User(userName=huayu, userPwd=123)}
复制代码
3.4 自定义id属性 测试

3.4.1 实体(自定义id属性)
  1. @Component(value = "myUser")public class User {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>//用户名<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>private  String userName;<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>//用户密码<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>private String userPwd;}
复制代码
3.4.2 测试
  1. @Testpublic  void testSpringAutoUserAnnotation(){<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>//User user = context.getBean("user", User.class);<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>//自定义id后,默认id不能使用: No bean named 'user' available<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean><bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>//必须使用自定义id<bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean>User user = context.getBean("myUser", User.class);<bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean><bean id="person"  autowire="byName">
  38. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  41. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  42. </context:component-scan><property name="nickName" value="hauyu"></property>
  43. </bean>System.out.println(user);<bean id="person"  autowire="byName">
  44. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  45. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  46.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  47. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  48. </context:component-scan><property name="nickName" value="hauyu"></property>
  49. </bean>//User(userName=huayu, userPwd=123)}
复制代码
3.5 自动装配

3.5.1 @Autowired


  • 组件自动装配,可以实现实体属性类型的自动装配,自动到spring的容器中,根据当前属性的类型或者名称进行注入,如果容器中能匹配到,就直接将实例对象注入到当前实体属性上,无序手动指定;
  • @Autowired自动装配原理:首先会根据byType方式,进行自动装配,

    • 如果不能唯一匹配(存在同类型多个实例对象),会再次尝试使用byName方式,根据当前实体属性名,到容器中进行匹配(容器中bean的id值),如果能唯一匹配,直接执行自动装配,

  • 默认情况下,@Autowired注解标识的实体属性,必须被装配

    • 如果装配失败,就直接抛出异常;
    • 如果不需要校验必须被装配(项目启动,如果装配失败,项目是起不来);
    • 通过指定required = false,去除必须执行自动装配的校验(即便容器中找不到装配的实例,也不会抛出异常);

  • 如果自动装配,容器中存在多个同类型的bean对象,可以使用注解@Qualifier("容器中同类型多个bean的某个id值"),实现指定到容器中,找对应的bean实例对象,进行自动装配;
  • 底层是如何做的:在指定要扫描的包时, 元素会自动注册一个bean的后置处理器:AutowiredAnnotationBeanPostProcessor的实例。该后置处理器可以自动装配标记了@Autowired、@Resource或@Inject注解的属性
3.5.2 实体

People
  1. @Data@Component("myPeople")public class People {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>//昵称<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>@Value("huayu")<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>private String name;<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>//玩具<bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean>@Autowired<bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>private Toy toy;}
复制代码
Toy接口
  1. public interface Toy {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>//得到玩具<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>public void getToy();}
复制代码
ToyImpl1
  1. @Component("toy1")public class ToyImpl1 implements Toy {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>@Value("玩具车")<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>private String toyName;<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>@Override<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>public void getToy() {<bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean><bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>System.out.println(this.toyName);<bean id="person"  autowire="byName">
  38. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  41. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  42. </context:component-scan><property name="nickName" value="hauyu"></property>
  43. </bean>}}
复制代码
3.5.3 测试

注意:可以通过接口类型获取实现类(推荐使用);
  1. @Testpublic  void testAutowired  (){<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>People people = context.getBean("myPeople", People.class);<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>people.getToy().getToy(); //玩具车}
复制代码
3.5.4 存在多个相同类型的bean

当存在多个相同类型的bean不能唯一匹配,会自动装配错误
在写一个Toy实现类,ToyImpl2
  1. @Component("toy2")public class ToyImpl2 implements Toy {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>@Value("尤克里里")<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>private String toyName;<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>@Override<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>public void getToy() {<bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean><bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>System.out.println(this.toyName);<bean id="person"  autowire="byName">
  38. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  41. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  42. </context:component-scan><property name="nickName" value="hauyu"></property>
  43. </bean>}}
复制代码
3.5.4.1 测试

报错信息(项目无法启动):
No qualifying bean of type 'com.kgc.spring.acnocation.bean.Toy' available: expected single matching bean but found 2: toy1,toy2
主要信息:类型无法唯一匹配;
3.5.4.2 required = false 允许不装配

People
  1. @Data@Component("myPeople")public class People {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>//昵称<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>@Value("huayu")<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>private String name;<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>//玩具<bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean>@Autowired (required = false)<bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>private Toy toy;}
复制代码
项目可以启动但是还是报错(一般项目中不会有两个相同类型的实现类;)
3.5.4.3 @Quailfy

People
  1. @Data@Component("myPeople")public class People {<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>//昵称<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>@Value("huayu")<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>private String name;<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean>//玩具<bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean>@Autowired<bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean> @Qualifier("toy2") //指定bean的id值<bean id="person"  autowire="byName">
  38. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  39. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  40.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  41. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  42. </context:component-scan><property name="nickName" value="hauyu"></property>
  43. </bean>private Toy toy;}
复制代码
3.5.4.4 测试
  1. @Testpublic  void testAutowired  (){<bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>People people = context.getBean("myPeople", People.class);<bean id="person"  autowire="byName">
  8. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  9. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  10.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  11. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  12. </context:component-scan><property name="nickName" value="hauyu"></property>
  13. </bean>System.out.println(people.getToy());<bean id="person"  autowire="byName">
  14. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  15. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  16.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  17. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  18. </context:component-scan><property name="nickName" value="hauyu"></property>
  19. </bean>//com.kgc.spring.acnocation.bean.ToyImpl2@15d9bc04<bean id="person"  autowire="byName">
  20. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  21. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  22.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  23. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  24. </context:component-scan><property name="nickName" value="hauyu"></property>
  25. </bean><bean id="person"  autowire="byName">
  26. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  27. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  28.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  29. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  30. </context:component-scan><property name="nickName" value="hauyu"></property>
  31. </bean>people.getToy().getToy();<bean id="person"  autowire="byName">
  32. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  33. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  34.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  35. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  36. </context:component-scan><property name="nickName" value="hauyu"></property>
  37. </bean>//尤克里里}
复制代码
3.6 指定扫描 排除扫描

3.6.1 指定扫描

include-filter
指定扫描(包含扫描):

  • 只会扫描指定的或者某类组件(使用分组扫描),加入到容器中;
  • 但是必须配合父标签的user-default-filter使用,默认值是true,就是全部扫描;
  • 指定扫描,如果要生效必须改为false
  • 指定扫描某类组件,type="annotation"  expression="某类组件注解的全类名";
  • 指定扫描某个类,type="assignable"   expression="某个类的全类名";
3.6.1.1 指定扫描某类组件

type="annotation"

  • org.springframework.stereotype.Component
  • org.springframework.stereotype.Repository
  • org.springframework.stereotype.Service
  • org.springframework.stereotype.Controller
  1. <bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>
复制代码
3.6.1.2  指定扫描某个类

type="assignable"
  1. <bean id="person"  autowire="byName">
  2. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  3. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="false" >
  4.     <context:include-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  5. </context:component-scan><context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  6. </context:component-scan><property name="nickName" value="hauyu"></property>
  7. </bean>
复制代码
3.6.2 排除扫描

exclude-filter

  • 排除扫描(剔除扫描):排除指定的某类组件不加入到容器中,处理排除外的其他组件,仍然会被添加到容器中;
  • 不需要配合父标签,use-default-filters="true" 因为,默认就是在全部扫描的基础上剔除;
  • 排除扫描某类组件,type="annotation"  expression="某类组件注解的全类名";
  • 排除扫描某个类,type="assignable"   expression="某个类的全类名";
3.6.2.1 排除扫描某类组件

type="annotation"
  1. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  2. <context:component-scan base-package="com.kgc.spring.acnocation" >
  3.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  4. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  5. </context:component-scan>
复制代码
3.6.2.2 排除扫描个类

type="assignable"
  1. <context:component-scan base-package="com.kgc.spring.acnocation" use-default-filters="true" >
  2. <context:component-scan base-package="com.kgc.spring.acnocation" >
  3.         <context:exclude-filter type="assignable" expression="com.kgc.spring.acnocation.bean.ToyImpl1"/>
  4. </context:component-scan><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
  5. </context:component-scan>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表