spring的自动装配

spring IOC容器可以自动装配bean,只需要在bean的autowire属性指定自动装配的模式。

模式:

1、byType:根据类型自动装配。根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有1个以上的类型匹配的bean,则抛出异常;

2、byName:根据名称自动装配,byname根据bean的名字和当前bean的setter风格的属性名进行装配,也就是说bean的id和类中的set方法的名字相对应,如类中的set方法是setUser(),则其对应xml文件配置的bean的id=“user”,若id="user2",则自动装配失败,获取不到对应bean的值,所以我们常常把bean的id写成对应类名的首字母小写;

3、constructor: 通过构造器自动装配(不推荐使用)。

配置spring自动装配的xml文件

	<bean id="car" class="com.test.autowire.Car"
p:name="ddd" p:price="20000"></bean> <!-- 在自动装配使用byType时,同时有多个类型匹配的bean会抛出异常
<bean id="car2" class="com.test.autowire.Car"
p:name="dazhong" p:price="20000"></bean> --> <bean id="address" class="com.test.autowire.Address" p:city="beijing"
p:no="23"></bean>
<!-- 在自动装配使用byName时,id没有对应的setter方法,则获取不到配置的bean值
<bean id="address1" class="com.test.autowire.Address"
p:city="beijing" p:no="23"></bean> --> <!--为person bean添加自动装配 autowire="byType"或者autowire="byName" -->
<bean id="person" class="com.test.autowire.Person" p:name="fei"
autowire="byName"></bean>

运行效果

1、成功运行:

2、在自动装配使用byType时,同时有多个类型匹配的bean会抛出错误异常信息

3、**在自动装配使用byName时,id没有对应的setter方法,则获取不到配置的bean值 **

缺点:

1、在bean的配置文件设置autowire属性进行自动装配,会装配所有bean的属性,若希望只装配个别的属性就显得不够灵活;

2,、不能够同时装配byName 和byType所以在项目中很少使用自动装配,但是在整合框架的时候能够用到。

bean的继承和依赖关系

继承:被继承的bean叫做父bean,继承的叫做子bean

1、子bean从父bean继承配置,包括属性配置,子bean也可以覆盖从父bean继承过来的配置;

2、父bean作为模板,设置abstract属性为true,这样就不能实例化这个bean,并不是所有的属性被继承,如abstract,autowire等不会被继承;

3、可以忽略父bean的class属性,让子bean指定自己的类,而共享相同的属性配置,此时abstract 必须为true.

配置spring继承和依赖的xml文件

<!-- 抽象bean:bean的abstract属性为true的bean,这样的bean不能被实例化,只能用来继承配置; 若某一个的bean的class属性没有指定,则该bean必须是一个抽象bean -->
<bean id="address" p:city="beijing" p:no="23" abstract="true"></bean> <!-- bean配置的继承:使用bean的parent属性指定继承那个bean的配置 -->
<bean id="address2" class="com.test.autowire.Address" parent="address"
p:no="33"></bean> <bean id="car" class="com.test.autowire.Car" p:name="ddd" p:price="20000"></bean> <!--bean的依赖:depends-on属性,前置依赖的bean在本bean实例化之前创建好,若没有创建好则抛出异常 -->
<bean id="person" class="com.test.autowire.Person" p:name="qin"
p:address-ref="address2" depends-on="car"></bean>

运行效果

1、成功运行:

2、前置依赖的bean在本bean实例化之前没有创建好,抛出异常错误信息

最新文章

  1. cs231n笔记:最优化
  2. linux基础2——gdb调试器
  3. python string intern
  4. 织梦DedeCms网站更换域名后文章图片路径批量修改
  5. 关于oc中出现的typedef的用法/定义函数指针
  6. CODESOFT中的圆角矩形的弧度该怎样设置?
  7. PHP版本中的VC6,VC9,VC11,TS,NTS区别
  8. Android进阶笔记05:View、SurfaceView 和GLSurfaceView 的关系和区别
  9. js基础知识总结(全)
  10. 天兔(Lepus)监控系统快速安装部署
  11. JavaScript 加号运算符详解
  12. Linux下进程间通信--消息队列
  13. CSS定位 深入理解定位(position)的偏移
  14. LNMP安装目录及配置文件位置
  15. Hive 导入 parquet 格式数据(未完,待续)
  16. javascript实现的浏览器下载文件
  17. &lt;thinkphp51&gt;如何安装cpmposer和tp51
  18. Linux&#160;Linux内核参数调优
  19. 第二弹:超全Python学习资源整理(进阶系列)
  20. [LeetCode&amp;Python] Problem 100. Same Tree

热门文章

  1. 曾经遇到的坑------href=&quot;#&quot;和href=&quot;javascript:void(0);&quot;、href=&quot;javascript:;&quot;
  2. Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块
  3. HTML+CSS理解
  4. ODS
  5. git全局忽略
  6. MongoDB环境配置
  7. jQuery滑动杆打分插件
  8. css transform常用变化解析
  9. springmvc拦截器基本使用
  10. maven 内置属性有哪些?该如何使用?