从静态上下文

时间:2018-02-08 17:39:14

标签: java spring spring-boot jhipster autowired

我有一个静态的createEntity方法,因为我需要从其他实体调用它,在这个方法中,我需要调用一个存储库,但逻辑上我不能这样做,因为它不是静态的。

public static Client createEntity(EntityManager em) {
   default_operation = operationRepository.save(OperationResource.createEntity(em));
}

我不会问我是不是被我的头脑吹走了,我试图使用@Autowired构造函数作为其他解决方案建议但是这对于存储库不起作用。

如果有人有想法或解决方法,我会很感激!

2 个答案:

答案 0 :(得分:3)

使用静态方法会导致问题(不仅在Spring中)。其中一个原因是类的自动装配属性在静态上下文中不可用。它们仅在Spring's lifecycle的某些阶段注入。

您应该将包含createEntity方法的类声明为Spring bean(例如使用@Component)。然后,您可以在需要调用@Autowired的所有其他类中注入此bean(带createEntity)。

答案 1 :(得分:0)

我不建议这样做,但由于任何原因,如果你不能改变原来的类(单身),你可以考虑下面的方法调用open() @PostConstruct方法:

createEntity(entityManager)