spring-Ioc(二)学习笔记
属性注入方式
- 设值注入:也就是set注入,通过setter方法注入
- java Bean
private ITestDao dao;
public void setDao(ITestDao dao){
this.dao = dao
}
- xml文件
<bean id="..." class="...">
<property name="dao">
<ref bean="....">
</property>
</bean>
- 构造注入:
- 直接量:String,8种值类型都是用value标签赋值,用type属性来指定数据的类型
- 当构造方法重载时,因参数个和参数类型不能区分时,引入 index属性来指明参数的位置
- 直接量:String,8种值类型都是用value标签赋值,用type属性来指定数据的类型
P命名空间注入
- 引入p的schema文件
<!-- 直接量(基本数据类型,字符串)属性的赋值方式-->
<bean id="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz"p:age="23" p:name="jack"></bean>
<!--引用Bean的赋值方式-->
<bean id ="testDao" class="cn.bdqn.spring.loc.dao.NewDao"></bean>
<bean id ="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz" p:dao-ref="testDao"></bean>
当bean的属性中存在集合时,如:list, set ,map注入方式
<bean id="moreComplexObject" class="example.ComplexObject">
<!--当属性的返回结果是类是properties文件时-->
<property name="adminEmails">
<props>
<prop key="administrator">administrator@example.org</prop>
<prop key="support">support@example.org</prop>
<prop key="development" > development@example.org</prop>
</props>
</property>
<!--当属性的返回结果是list集合时-->
<property name="someList">
<list>
<value>a list element followed by a reference</value> <!--直接量赋值方式-->
<ref bean="myDataSource"> <!--java Bean的赋值方式-->
</list>
</property>
<!--当属性的返回结果为map时-->
<property name="someMap">
<map>
<entry key="an entry" value="just some string"/>
<entry key="a ref" value-ref="myDataSoruce"/>
</map>
</property>
<!--当属性的返回结果为set时-->
<property name="someSet">
<set>
<value>just some string<value>
<ref bean="myDataSource"/>
</set>
</property>
</bean>
给元素赋值null 或者“”
<!--把属性设置为null值-->
<bean class="ExampleBean">
<property name="email">
<null/>
</property>
</bean>
<!--设置为空字符串-->
<bean class="ExampleBean">
<property name="email" value="">
</bean>
- spring内部Bean的注入,相当于随用随new,外部的其它Bean不能使用
自动装配
- 按类型匹配
- 设置全局自动装配的类型
- Spring提供的4种自动装配类型
取值 | 说明 | |
no | 默认值,Spring默认不进行自动装配,必须显式指定依赖对象</td | |
byName | 根据属性我自动装配,Spring自动查找与属性名相同的id,如果找到,则自动注入,否则什么也不做</td | |
byType | 根据的类型自动化装配,Spring自动查找与属性类型相同的Bean,如果刚好找到唯一的那个,则自动注入。如果找到多个与属性类型相同的Bean,则抛出异常,如果没有找到,就什么也不做 | |
constructor | 和byType类似,不过它针对构造方法,如果Spring找到一个Bean和构造方法的参数类型相匹配,则通过构造注入该依赖对象,如果找不到,交抛出异常 |