@survivorZzz
2018-10-17T03:47:52.000000Z
字数 1092
阅读 2178
Spring java
有这样一个bean定义:
public class MyClass implements InitializingBean {static {System.err.println(">>>>>>>>> static block");}{System.err.println(">>>>>>>>> non-static block");}@Overridepublic void afterPropertiesSet() throws Exception {System.err.println(">>>>>>>>> afterPropertiesSet method!");}@PostConstructvoid method() {System.err.println(">>>>>>>>> postConstruct method!");}}
SpringBoot 启动类中向容器中注入MyCalssBean
@SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);MyClass myClass = new MyClass();}@Beanpublic MyClass newMyClass() {return new MyClass();}}
亲测, 输出顺序:
>>>>>>>>> static block>>>>>>>>> non-static block>>>>>>>>> postConstruct method!>>>>>>>>> afterPropertiesSet method!>>>>>>>>> non-static block
结论:
afterPropertiesSet方法和被@PostConstruct方法会在MyClass实例被创建并且MyClass类中的所有实例属性都被初始化之后执行. 而afterPropertiesSet方法会在被@PostConstruct方法标注的方法之后执行.