查看文档5.45 autowiring
但是spring中不推荐使用自动装配,推荐使用annotation
byName
<!--autowire自动装配,简化spring配置
byName根据名称(set方法)去查找相应的bean,如果有装配上
-->
<bean id="userDao" class="cn.sxt.dao.impl.UserDaoMysqlImpl"/>
<bean id="service" class="cn.sxt.service.impl.UserServiceImpl" autowire="byName">
</bean>
public class UserServiceImpl implements UserService{
private UserDao userDao=null;
public UserServiceImpl() {
super();
}
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
@Override
public void getUser() {
userDao.getUser();
}
}
如果所有都想这么配置,每个都要写非常麻烦,可以在头文件上加上
默认配置
<?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" default-autowire="byName">
byType
<!--byType根据类型进行自动装配,不用管Bean的id ,但是同一种类型的bean只能有一个,所以不推荐使用byType 容易不注意-->
<bean class="cn.sxt.dao.impl.UserDaoMysqlImpl"/>
<bean id="service" class="cn.sxt.service.impl.UserServiceImpl" autowire="byType">
</bean>
constructor
<!-- constructor 当通过构造器注入实例化bean时,使用Type的方式装配构造方法-->
<bean class="cn.sxt.dao.impl.UserDaoMysqlImpl"/>
<bean id="service" class="cn.sxt.service.impl.UserServiceImpl" autowire="constructor">
</bean>