我有一个静态的createEntity方法,因为我需要从其他实体调用它,在这个方法中,我需要调用一个存储库,但逻辑上我不能这样做,因为它不是静态的。
public static Client createEntity(EntityManager em) {
default_operation = operationRepository.save(OperationResource.createEntity(em));
}
我不会问我是不是被我的头脑吹走了,我试图使用@Autowired构造函数作为其他解决方案建议但是这对于存储库不起作用。
如果有人有想法或解决方法,我会很感激!
答案 0 :(得分:3)
使用静态方法会导致问题(不仅在Spring中)。其中一个原因是类的自动装配属性在静态上下文中不可用。它们仅在Spring's lifecycle的某些阶段注入。
您应该将包含createEntity
方法的类声明为Spring bean(例如使用@Component
)。然后,您可以在需要调用@Autowired
的所有其他类中注入此bean(带createEntity
)。
答案 1 :(得分:0)
我不建议这样做,但由于任何原因,如果你不能改变原来的类(单身),你可以考虑下面的方法调用open()
@PostConstruct方法:
createEntity(entityManager)