Construct > @Value,@Autowired > @PostConstruct > @Bean
上述既是创建顺序,也是执行顺序,若方法阻塞,后续方法将不会被触发
@Component
public class A {
@Value("${value}")
private String value = null;
@Autowired
private B b = null;
@Autowired
private Integer Bbean;
public A() {
System.out.println("Construct: "+value+", "+b+", "+Bbean);
}
@PostConstruct
public void postConstruct(){
System.out.println("PostConstruct: "+value+", "+b+", "+Bbean);
}
@Bean
public void bean(){
System.out.println("Bean: "+value+", "+b+", "+Bbean);
}
}
@Component
public class B {
@Bean("Bbean")
public Integer bean(){
return 10;
}
}
输出
Construct: null, null, null
PostConstruct: value, B@7ce4de34, 10
Bean: value, B@7ce4de34, 10
@PreDestroy 当Component被容器移除调用的的方法 //@Autowired //DefaultListableBeanFactory factory; //factory.removeBeanDefinition("bean");