15、spring注解學習(自動裝配)——@Autowired標注在方法、構造器和參數位置上


1、@Autowired 標注在方法上 標注在方法,Spring容器創建當前對象,就會調用方法,完成賦值; 方法使用的參數,自定義類型的值從ioc容器中獲取。

配置類代碼
@Configuration
@Import({Boss.class, Car.class})
public class MainConifgOfAutowired

public class Boss {
@Autowired public void setCar(Car car) {
  this.car = car;
}
}

測試部分代碼

Boss boss = ac.getBean(Boss.class);
        System.out.println(boss);
        Car car = ac.getBean(Car.class);
        System.out.println(car);
輸出: car相等 證明@Autowired 使用在方法上可以獲取值 Boss [car=com.springanno.pack.Car@47d90b9e] com.springanno.pack.Car@47d90b9e

另外:
注:

@Bean+方法參數;參數從容器中獲取;默認不寫@Autowired效果是一樣的;都能自動裝配
這種方式也可以自動裝配不需要@Autowired
@Bean標注的方法創建對象的時候,方法參數的值從容器中獲取
   @Bean public Boss boss(Car car){
        Boss boss = new Boss();
        boss.setCar(car);
        return  boss;
    }

 

2、@Autowired 使用在構造器上

如果組件只有一個有參構造器,這個有參構造器的@Autowired可以省略,參數位置的組 件還是可以自動從容器中獲取
  @Autowired //構造器要用的組件,都是從容器中獲取
    public Boss(Car car){
        this.car = car;
        System.out.println("Boss...有參構造器");
    }

測試
Boss boss = ac.getBean(Boss.class);
        System.out.println(boss);
        Car car = ac.getBean(Car.class);
        System.out.println(car);

輸出:
car相等 證明@Autowired 使用在構造器上可以獲取值
Boss [car=com.springanno.pack.Car@460d0a57]
com.springanno.pack.Car@460d0a57

3、@Autowired 使用在參數上

method(@Autowired Car car)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM