gpt4 book ai didi

spring - JPA @Entity 中的 Bean 注入(inject)

转载 作者:IT老高 更新时间:2023-10-28 13:05:29 25 4
gpt4 key购买 nike

是否可以使用 Spring 的依赖注入(inject)将 bean 注入(inject) JPA @Entity

我尝试@Autowire ServletContext,但是,虽然服务器确实启动成功,但我在尝试访问 bean 属性时收到了 NullPointerException。

@Autowired
@Transient
ServletContext servletContext;

最佳答案

您可以使用 @Configurable 将依赖项注入(inject)到不受 Spring 容器管理的对象中,如下所述:http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/aop.html#aop-atconfigurable .

您现在已经意识到,除非使用 @Configurable 和适当的 AspectJ 编织配置,否则 Spring 不会将依赖项注入(inject)使用 new 运算符创建的对象中。实际上,除非您从 ApplicationContext 中检索到它们,否则它不会将依赖项注入(inject)对象,原因很简单,它根本不知道它们的存在。即使您使用 @Component 注释您的实体,该实体的实例化仍将由您或 Hibernate 等框架的 new 操作执行。请记住,注释只是元数据:如果没有人解释该元数据,它不会添加任何行为或对正在运行的程序产生任何影响。

话虽如此,我强烈建议不要将 ServletContext 注入(inject)实体。实体是域模型的一部分,应该与任何交付机制分离,例如基于 Servlet 的 Web 交付层。当命令行客户端或其他不涉及 ServletContext 的东西访问该实体时,您将如何使用该实体?您应该从该 ServletContext 中提取必要的数据,并通过传统方法参数将其传递给您的实体。通过这种方法,您将获得更好的设计。

关于spring - JPA @Entity 中的 Bean 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16471636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com