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)
