JPA @Entity中的Bean注入
是否可以@Entity
使用Spring的依赖项注入将bean注入JPA ?
我尝试使用@Autowire ServletContext,但是尽管服务器确实成功启动,但是在尝试访问bean属性时收到了NullPointerException。
@Autowired@Transient
ServletContext servletContext;
回答:
可以使用以下@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中提取必要的数据,并将其通过传统的方法参数传递给你的实体。通过这种方法,你将获得更好的设计。
以上是 JPA @Entity中的Bean注入 的全部内容, 来源链接: utcz.com/qa/430903.html