内容来自于马士兵老师的Spring视频
Spring开发环境传送门:http://blog.csdn.net/u010513756/article/details/49679605
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="u" class="com.xiao.dao.impl.UserDAOImpl">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- scoppe="prototype"每次获取到的bean都是新的 -->
<bean id="userService" class="com.xiao.service.UserService" scope="prototype">
<!-- collaborators and configuration for this bean go here -->
<!-- <property name="userDAO" ref="u"/> -->
<constructor-arg>
<!-- 参考以前初始化的bean -->
<ref bean="u"/>
</constructor-arg>
</bean>
<!-- more bean definitions go here -->
</beans>
以上xml设置意思是:创建一个名叫u的bean,他的class是UserDAOImpl,之后再创建一个bean叫做userService,它指向的class是UserService,通过使用scope="prototype"来设置每次创建的bean都是新的,如果不这样设置的话每次获得的bean可能还是原来的那个,这一点可以通过
UserService service = (UserService)applicationContext.getBean("userService");
UserService service2 = (UserService)applicationContext.getBean("userService");
System.out.println(service == service2);
来进行判断
在UserService这个类中有这个方法
private UserDAO userDAO;
public UserService(UserDAO userDAO) {
super();
this.userDAO = userDAO;
}
那么就可以通过<constructor-arg>的方式将前面设置的名叫u的bean“注入”到userService这个bean中(这个貌似就叫做依赖注入吧,我猜的),不明白这里为什么可以不设置type就可以找到UserService类中的UserService方法了,我猜是名叫u的bean中以及可以通过它找到class,也就可以找到type了所以不需要type设置,我这里设置了反而出现错误了。如果是常规比如说String的参数,就像这样
public UserService(String str) {
super();
System.out.println(str);
}
那么我在bean.xml中的设置就可以这样
<constructor-arg type="java.lang.String">
<value>Slience</value>
</constructor-arg>