Spring-05--Spring自动装配

来源:互联网 发布:扭转弹簧设计 知乎 编辑:程序博客网 时间:2024/06/03 20:50
本人初学Spring框架,新手一个,菜鸟一个。写这类文章并非炫耀知识,我也没能力炫耀,
只是作为本人的习总结、当笔记用。希望各位前辈看到了我总结有错的地方可以多多指
,如果是对大家有帮助的,也希望大家可以赏脸浏览;

-------------------------------------------------------------------------------------------------------------------
今天开始学习配置Bean,分为几个小节来完成(学习的内容为红色字体的内容)
内容提要
配置Bean
--配置形式:基于XML文件的方式;基于注解的方式;
--Bean的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法&实例工厂方法)、FactoryBean
--IOC容器 BeanFactory&ApplicationContext概述
--依赖注入的方式:属性注入、构造器注入
--注入属性值的细节
--自动装配
--Bean 之间的关系:继承、依赖
--Bean 的作用域:singleton、prototype、WEB 环境作用域
-- 使用外部属性文件
--spEL
--IOC 容器中Bean的生命周期
--Spring 4.x新特性:泛型依赖注入
-------------------------------------------------------------------------------------------------------------------
在这里先插入一个小知识点,就是关于我们在<bean></bean>注入属性值时,可以使用另外一种比较方便以及简单的注入方式,我不知道叫什么名字,我管它叫“p属性注入“,下面演示一下,特别简单;
(在myEclipse中可以直接使用,在Eclipse中需要导入p包)
--p属性注入
语法格式:
***   普通变量  --  p:变量名称=“变量值”       
***   类变量  --  p:变量名称-ref=“该变量所指向的Bean的id值”
<!-- p属性引用属性赋值  --><bean id="address_p" class="com.ioc.demo.Address_p"p:city="ShenZhne" p:code="12B302"></bean><bean id="car_p" class="com.ioc.demo.Car_p"p:brand="BYD" p:price="400000"></bean><bean id="person_p" class="com.ioc.demo.Person_p"p:name="凛" p:car-ref="car_p" p:address-ref="address_p"></bean>
--Bean的自动装配
所谓Bean的自动装配,,就是我们在IOC容器中可以自动装配<bean></bean>,不用像之前那样在
<property>或者<constructor-arg>中用ref去指明,需要做的只是在<bean></bean>的autowire属性里
指定自动装配的模式;模式有两种
byName:根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的,则自动匹配,
若没有匹配的,则不匹配;但是,必须将目标bean的名称(id)和属性名设置的完全相同
<!-- 自动装配 byName --><bean id="address_byName" class="com.ioc.demo.Address_byName"p:city="GuangZhou" p:code="11A112"></bean><bean id="car_byName" class="com.ioc.demo.Car_byName"p:brand="Audi" p:price="400000"></bean><bean id="person_byName" class="com.ioc.demo.Person_byName"p:name="通过自动装配ByName的形式" autowire="byName"></bean>

byType :根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有多个与目标bean类型
一致的bean,在这种情况下,Spring将无法判定哪个bean最适合该属性,所以不能自动装配

<!-- 自动装配 byType --><bean id="address_byType" class="com.ioc.demo.Address_byType"p:city="HangZhou" p:code="52C12"></bean><bean id="car_byType" class="com.ioc.demo.Car_byType"p:brand="BMW" p:price="500000"></bean><bean id="person_byType" class="com.ioc.demo.Person_byType"p:name="通过自动装配ByType的形式" autowire="byType"></bean>
虽然说这两种方法挺好用,但是无法进行嵌套还有交替使用,也不够灵活,所以一般配置不会使用这种方法,
当做了解就好了。
源码
http://pan.baidu.com/s/1pLsagT9


0 0
原创粉丝点击