在java方法、构造器位置使用@Autowired自动装配
1、首先新建一个Boss实体类,在这个实体类中有一个其他的组件。
package com.gwolf.vo;
import org.springframework.stereotype.Component;
@Component
public class Boss {
private Car car;
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Boss [car=" + car + "]";
}
}

2、现在在方法上标注@Autowired注解,使用这个注解之后Spring容器创建当前对象的时候就会调用这个方法,完成赋值。
方法使用的参数,自定义的类型的值从IOC容器中获取。

3、编写一个junit测试类取得vo的组件,然后打印值。
package com.gwolf.test;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.gwolf.config.MainConfigOfAutowired;
import com.gwolf.vo.Boss;
public class ComponentTest {
AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext(MainConfigOfAutowired.class);
@Test
public void testImport() {
Boss boss = (Boss)applicationContext.getBean(Boss.class);
System.out.println(boss);
}
}

4、也可以在构造器中注入组件,默认加在IOC容器中的组件,容器启动会调用无参构造器创建对象,再进行初始化赋值等操作。
package com.gwolf.vo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Boss {
private Car car;
@Autowired
public Boss(Car car) {
this.car = car;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Boss [car=" + car + "]";
}
}

5、如果组件只有一个参数构造器,这个有参构造器的@Autowired可以省略,参数位置的组件还是可以紫宗从容器中获取。
@Bean标注的方法创建对象的时候,方法参数的值也是从容器中获取。

6、上图中Color对象初始化的时候会自动从容器中把car注入到Color中。