小编典典

JPA @Entity中的Bean注入

spring

是否可以@Entity使用Spring的依赖项注入将bean注入JPA ?

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

@Autowired
@Transient
ServletContext servletContext;

阅读 1097

收藏
2020-04-13

共1个答案

小编典典

可以使用以下@Configurable说明将依赖项注入到不受Spring容器管理的对象中:http : //static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/aop.html#aop-atconfigurable。

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

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

2020-04-13