一、xml配置
在Spring配置xml中增加
<context:annotation-config /> 元素,表示要基于注解进行自动装配
二、自动配置注解及使用
支持的自动装配注解有:
@Autowired Spring自带的注解
@Inject JSR-330的注解,和@Autowired类似
@Resource JSR-250的注解
使用
1、将自动装配注解标注在需要装配的setter方法或者字段上(还有其他用法),即可进行自动装配
当Spring发现我们对某个地方进行@Autowired 注解后,便会尝试进行byType自动装配。
2、required=false
当没有合适的bean可以注入的时候可以选择 @Autowired(required=false)
3、限定性依赖@Qualifier
当有多个合适的bean可以注入的时候可以使用@Qualifier限定注入哪个bean
@Autowired
@Qualifier("guitar")
三、示例代码
xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:annotation-config />
<bean id="counter" class="SpringStudy.Model.Counter">
<property name="multiplier" value="#{T(java.lang.Math).random()}" />
<property name="equals" value="#{not (1 lt 2)}" />
<!-- 等同于Counter.song!=null?Counter.song:'Sugar' -->
<property name="song" value="#{counter.song?:'Sugar'}" />
</bean>
<bean id="piano" class="SpringStudy.Model.Piano">
<property name="name" value="piano" />
<property name="sound" value="Dalala" />
</bean>
<bean id="guitar" class="SpringStudy.Model.Guitar">
<property name="name" value="guitar" />
<property name="sound" value="talalala" />
</bean>
</beans>
Counter类
package SpringStudy.Model;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class Counter {
public Counter() {
}
public Counter(double multiplier, String song,Instrument instrument) {
this.multiplier = multiplier;
this.song = song;
this.instrument=instrument;
}
private double multiplier;
private boolean equals;
private String song;
@Autowired(required=false)
@Qualifier("guitar")
private Instrument instrument;
public double getMultiplier() {
return multiplier;
}
public void setMultiplier(double multiplier) {
this.multiplier = multiplier;
}
public boolean isEquals() {
return equals;
}
public void setEquals(boolean equals) {
this.equals = equals;
}
public String getSong() {
return song;
}
public void setSong(String song) {
this.song = song;
}
public Instrument getInstrument() {
return instrument;
}
public void setInstrument(Instrument instrument) {
this.instrument = instrument;
}
}
Piano类代码参考
http://blog.youkuaiyun.com/vvhesj/article/details/47661001