2017-01-16 61 views
1

在初始化Spring时是否可以调用某种方法 - 在数据库连接启动之后,但在@RestController端点启动(可用于发送请求)之前?启动端点之前的弹簧运行方法

在REST端点准备就绪之前,我需要发送一些数据库请求(使用JpaRepository)。

我试图找到类似的帖子,但我无法。我发现注释@PostConstruct或接口CommandLineRunnerApplicationListener<ContextRefreshedEvent>,但我认为所有的都在端点启动后调用?或者我错了?

+0

请解释一下你需要解决什么问题(你需要做什么) –

回答

1

@PostConstruct在bean完全构建之后但在“投入使用”之前调用 - 在控制器的情况下,它意味着在它开始提供请求之前。 (在服务bean的情况下,这意味着在它连接到任何其他bean之前)。

请注意,最好使用构造函数注入来为bean提供依赖关系,但它可能仍然是明智的做数据库在@PostConstruct中查询以避免实际构造函数中的繁重操作。

+0

好的谢谢,所以据我的理解,我可以在用@ @PostConstruct注释的方法中使用\ @Autowired字段? – user3626048

+1

是的,但最好尽可能避免使用自动装配字段,因为它隐藏了依赖关系,难以进行测试,并可能导致模糊的错误。如果可行的话,最好自动装配构造函数。 – chrylis