Annotation:采用注释的方式类进行DI注入
1、在beans.xml配置文件添加如下:
2、在xml-catalog中添加xsd配置文件
Location: E:\study\java\tools\spring\spring-framework-2.5.6-with-dependencies\spring-framework-2.5.6\dist\resources\spring-context-2.5.xsd
KeyType: Schema Location
Key: http://www.springframework.org/schema/context/spring-context-2.5.xsd
3、在相应类的setBean上进行注释@Autowired
public class UserService {
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
@Autowired
public void setUserDao(@Qualifier("userDao") UserDao userDao) {
this.userDao = userDao;
}
public void add(User u){
userDao.add(u);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config/>
<bean id="userDao" class="com.jimmy.dao.imp.UserOracleDao">
<property name="daoId" value="1"></property>
</bean>
<bean id="userDao1" class="com.jimmy.dao.imp.UserOracleDao">
<property name="daoId" value="2"></property>
</bean>
<bean id="userService" class="com.jimmy.service.UserService" >
</bean>
beans.xml配置文件中userService并没有进行注入配置,而Spring通过@Autowired 这个注释 按照byType类型匹配注入,因此找到bean_id=userDao这个类。如果配置文件中有2个类型一样的bean,那么Spring如何来选择该注入哪个bean呢?此时就得通过@Qualifier("userDao")这个注释来解决。 它会找到userDao这个bean。