<!-- spring的依赖注入
依赖注入:
IOC的作用:
降低程序之间的耦合(依赖关系)
依赖关系的管理:
交给spring维护,在当前类中需要用到的其他类的对象,由spring提供,在配置文件中说明依赖关系的维护,即称为依赖注入:
依赖注入:
能注入的数据:
基本类型和string
其他的bean类型,在配置文件中注解配置过的bean
复杂类型/集合类型
注入的方式:
第一种:使用构造函数提供
第二种:使用set方法提供
第三种:使用注解提供
-->
<!-- 构造函数的注入
使用的标签:constructor-arg
标签位置:bean标签的内部
标签中的属性:
type:用于指定要注入的数据的数据类型,该数据类型是构造函数中某个或某些参数的类型
index:用于指定要注入的数据给构造函数中指定位置的参数,索引的位置是从0开始
name:用于指定给构造函数中指定名称的参数赋值=======================最常用!
===================================================以上三个用于指定给构造函数中哪个参数赋值
value:给基本类型和String类型提供数据
ref:用于引用ioc-bean配置的类型,常用于赋值时候无法直接赋值转化的类型的配置。
优势:在获取bean对象的时候,注入数据是必须的操作,否则对象无法创建成功。
弊端:改变了类对象的实例化方式,使在创建对象时,如果用不到这些数据也必须提供。
====这种方法一般不用====
-->
<!-- set方法注入
这个方法要求类中必须对属性有相应的构造方法,而且名称必须对应,不能有错。它先执行默认构造函数进行构造,
再对属性进行赋值,也就是说不需要写满足所有情况的构造函数就像上面的注入方式一样。
使用的标签:property
标签位置:同上
标签中的属性:
name:用于指定给构造函数中指定名称的参数赋值=======================最常用!
===================================================以上三个用于指定给构造函数中哪个参数赋值
value:给基本类型和String类型提供数据
ref:用于引用ioc-bean配置的类型,常用于赋值时候无法直接赋值转化的类型的配置。
优势:创建对象当然时候没有明显限制,可以直接使用默认构造函数
弊端:不能保证每个值都一定注入
-->
如果需要为一个配置类进行非基本数据类型或String类型的注入,一般有:1.待注入类为外来类,则这种情况,在xml中配置则利用ref来指定注入类的id;如果在注解配置中,则直接利用构造函数AutoWired注入即可;2.待注入类是自定义类,则这种情况,在xml中扫描包的情况下就如下列代码所示利用set+bean进行注入,如果是純注解配置则同样利用IOC的AutoWired进行注入。
<!-- 配置自定义转换器
1.配置org.springframework.context.support.ConversionServiceFactoryBean
2.将自己写的类型转换器注入,在IOC中支持起来
-->
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!-- 上面一种不能用,value只能给基本类型和String类型的数据进行注入,如果要引入其他类,用ref或set来注入外来类型或扫描的自定义类型-->
<!-- <property name="converters" value="com.nju.utils.convertor.StringToDateConvertor"></property>-->
<property name="converters">
<set>
<bean class="com.nju.utils.convertor.StringToDateConvertor"></bean>
</set>
</property>
</bean>