@Autowired自动注入,调用的是其构造方法。如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
如果是在servlet中,@PostConstruct方法在构造方法之后,init方法之前执行。
demo如下
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ServerMain.class)
public class MyTest {
@Autowired
private StatisticRootService statisticRootService;
@Test
public void te() {
List<StatusStatisticVo> list = statisticRootService.getUserSealByAuditStatusStat();
System.out.println(list.toString());
}
}
@Service
public class StatisticRootService {
@Autowired
private StatisticDao statisticDao;
public StatisticRootService() {
System.out.println("构造方法调用......");
}
@PostConstruct
public void systemOut() {
System.out.println("@PostConstruct注解方法调用......");
}
public List<StatusStatisticVo> getUserSealByAuditStatusStat() {
return statisticDao.getUserSealByAuditStatusStat();
}
}