自动装配有两种方式,按名称与按类型。
按名称
之前用到的两个类,Userservice,UserDao
public class Userservice {
UserDaoImpl userDao;
public UserDaoImpl getUserDao() {
return userDao;
}
public void setUserDao(UserDaoImpl userDao) {
this.userDao = userDao;
}
public void update(){
System.out.println("Service update");
userDao.update();
}
}
public class UserDaoImpl implements UserDao{
private String DaoId;
public void setDaoId(String daoId) {
DaoId = daoId;
}
@Override
public void update() {
System.out.println(DaoId+"Dao update");
}
}
配置XML
通过属性autowire,设置属性值为byName
<bean id="userService" class="com.cjy.sping5.Userservice" autowire="byName">
</bean>
<bean id="userDao" class="com.cjy.sping5.UserDaoImpl">
<property name="daoId" value="1997"> </property>
</bean>
测试
public void testUser()
{
ApplicationContext context= new ClassPathXmlApplicationContext("bean2.xml");
Userservice userservice= context.getBean("userService", Userservice.class);
System.out.println(userservice);
userservice.update();
}
按类型
XML配置,设置autowire值为byType
<bean id="userService" class="com.cjy.sping5.Userservice" autowire="byType"></bean>
<bean id="userDao" class="com.cjy.sping5.UserDaoImpl">
<property name="daoId" value="1999"> </property>
</bean>
测试结果