概述:
用的廣泛的注解@Autowired
1.可以用于到字段上
2.setter方法上
3.構造方法上
直接上代碼
package learn.chapter2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class GirlSong {
//@Autowired
private CompactDisc compactDisc;
@Autowired
public GirlSong(CompactDisc compactDisc) {
this.compactDisc = compactDisc;
}
public CompactDisc getCompactDisc() {
return compactDisc;
}
//@Autowired
public void setCompactDisc(CompactDisc compactDisc) {
this.compactDisc = compactDisc;
}
}
測試代碼
package learn.chapter;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import learn.chapter2.CDPlayerConfig;
import learn.chapter2.GirlSong;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class AutowiredTest {
@Autowired
private GirlSong girlSong;
@Test
public void CompactDiscIsNotNull(){
assertNotNull(girlSong.getCompactDisc());
}
}
總結:你可以依次注釋字段、構造方法,setter的方法上的@Autowired,都可以注入, @ContextConfiguration() 加載java配置檔案
@Autowired(required=false) 有個預設屬性 required 如果為false如果沒有候選者,将會不會注入,也不會報錯,這樣很危險,是以它預設是required=true