@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
举个栗子:
@Component
public class A {
@Autowired
private B b;
public A() {
System.out.println("执行A的构造方法,此时b还未被注入: b = " + b);
}
@PostConstruct
private void init() {
System.out.println("@PostConstruct将在依赖注入完成后被自动调用: b = " + b);
}
}
@Component
public class B {
public B(){
System.out.println("执行B的构造方法");
}
}
测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:application-context.xml"})
public class MessageTest {
@Resource
A a;
@Test
public void testAB(){
}
}
执行testAB()方法结果:
执行A的构造方法,此时b还未被注入: b = null
执行B的构造方法
@PostConstruct将在依赖注入完成后被自动调用: b = com.nss.B@51841ac6
通过以上结果可以看出:被@PostConstruct注解的方法将在该类中所有注入操作完成之后执行。