Bean实例化三种方式
- 无参构造方法实例化(如上面案例)
- 工厂静态方法实例化
<!-- 相当于调用来cn.qileyun.factory.StaticFactory.getUserDao -->
<bean id="userDao" class="cn.qileyun.factory.StaticFactory" factory-method="getUserDao"></bean>
- 工厂实例方法实例化
<bean id="factory" class="cn.qileyun.factory.DynamicFactory"></bean>
<!-- 在factory中调用getUserDao方法获取对象-->
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>
依赖注入
set方法注入
p命名空间注入
p命名空间注入本质也是set方法注入,但是比较方便
构造方法注入
<bean id="userService" class="cn.qileyun.service.impl.USerServiceImpl">
<!--构造方法引用-->
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
普通数据类型注入
private String username;
private int age;
public void setUsername(String username) {
this.username = username;
}
public void setAge(int age) {
this.age = age;
}
public UserDaoImpl() {
System.out.println("无参构造方法被调用");
}
配置文件
<bean id="userDao" class="cn.qileyun.dao.impl.UserDaoImpl">
//使用set注入当然也可以用上面三种其任意一种注入
<property name="username" value="zhangsan"/>
<property name="age" value="18"/>
</bean>
基本数据类型
private List<String> strList;
private Map<String, User> userMap;
private Properties properties;
public void setStrList(List<String> strList) {
this.strList = strList;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
集合数据类型
<bean id="userDao" class="cn.qileyun.dao.impl.UserDaoImpl">
<property name="strList">
<!-- list对象-->
<list>
<!-- 添加普通数据类型 或者ref添加对象-->
<value>1</value>
<value>2</value>
<value>3</value>
<value>14</value>
</list>
</property>
<property name="userMap">
<map>
<!-- key 普通数据类型 key-ref value-ref 对象 value普通类型 -->
<entry key="u1" value-ref="user1"></entry>
<entry key="u2" value-ref="user2"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="p1">pppp1</prop>
<prop key="p2" >pppp2</prop>
</props>
</property>
</bean>
<bean id="user1" class="cn.qileyun.domain.User">
<property name="name" value="tom"/>
<property name="addr" value="beijin"/>
</bean>
<bean id="user2" class="cn.qileyun.domain.User">
<property name="name" value="tom2"/>
<property name="addr" value="beijin2"/>
</bean>