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)