添加@Autowired註解
package cn.com.myFrame.spring.autowire;
import org.springframework.beans.factory.annotation.Autowired;
public class Chinese {
@Autowired
private Dog dog=new Dog();
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
(2):在spring文件中加入AutowiredAnnotationBeanPostProcessorBean
<?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-2.5.xsd">
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<bean id="chinese" class="cn.com.myFrame.spring.autowire.Chinese"/>
<bean id="dog" class="cn.com.myFrame.spring.autowire.Dog">
<property name="name">
<value>sbDog</value>
</property>
</bean>
</beans>
2:@Qualifier 只能和 @Autowired 結合使用,防止xml中有多個注入類型的定義
package cn.com.myFrame.spring.autowire;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class Chinese {
@Autowired
@Qualifier("dog1")
private Dog dog=new Dog();
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
xml中有多個Dog的聲明
<?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-2.5.xsd">
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<bean id="chinese" class="cn.com.myFrame.spring.autowire.Chinese"/>
<bean id="dog" class="cn.com.myFrame.spring.autowire.Dog">
<property name="name">
<value>sbDog</value>
</property>
</bean>
<bean id="dog1" class="cn.com.myFrame.spring.autowire.Dog">
<property name="name">
<value>2bDog</value>
</property>
</bean>
</beans>
3:@Resource(name = "dog1")
package cn.com.myFrame.spring.autowire;
import javax.annotation.Resource;
public class Chinese {
@Resource(name = "dog1")
private Dog dog=new Dog();
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
這裏添加的是 CommonAnnotationBeanPostProcessor
<?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-2.5.xsd">
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>
<bean id="chinese" class="cn.com.myFrame.spring.autowire.Chinese"/>
<bean id="dog" class="cn.com.myFrame.spring.autowire.Dog">
<property name="name">
<value>sbDog</value>
</property>
</bean>
<bean id="dog1" class="cn.com.myFrame.spring.autowire.Dog">
<property name="name">
<value>2bDog</value>
</property>
</bean>
</beans>
4:<context:annotationconfig/> 將隱式地向 Spring 容器註冊 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPostProcessor 以及 equiredAnnotationBeanPostProcessor 這 4 個 BeanPostProcessor。
需要注意添加相應的命名空間
<?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">
5:@Component 註釋 從 XML 配置文件中完全移除 Bean 定義的配置
package cn.com.myFrame.spring.autowire;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
@Component
public class Chinese {
@Resource(name = "dog")
private Dog dog=new Dog();
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
Spring 容器必須啓用類掃描機制以啓用註釋驅動 Bean 定義和註釋驅動 Bean 自動注入的策略 <context:component-scan/>
<?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:component-scan base-package="cn.com.myFrame.spring.autowire"/>
</beans>
Spring 在 2.1 以後對註釋配置提供了強力的支持,註釋配置功能成爲 Spring 2.5 的最大的亮點之一。合理地使用 Spring 2.5 的註釋配置,可以有效減少配置的工作量,提高程序的內聚性。但是這並不意味着傳統 XML 配置將走向消亡,在第三方類 Bean 的配置,以及那些諸如數據源、緩存池、持久層操作模板類、事務管理等內容的配置上,XML 配置依然擁有不可替代的地位