当前位置: 首页 > 面试题库 >

JPA @Entity中的Bean注入

益何平
2023-03-14
问题内容

是否可以@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中提取必要的数据,并将其通过传统的方法参数传递给你的实体。通过这种方法,你将获得更好的设计。



 类似资料:
  • 问题内容: 因此,我正在使用DerbyDB,并且正在设置一些实体。我有一个用作某些实体()的超类。更具体地讲,我有一个超类和子类3,即,和。现在,我有一个不同的实体,假设该实体应引用其所有者(作为其字段之一)。因此,我创建了一个名为的字段。我得到的错误是: 有解决方法吗? 问题答案: 我可以提出两种解决方案: 变更继承 您得到的异常清楚地描述了您的问题:不是实体。使用接口声明为超类的任何类都不能是

  • 我在试用spring数据。我有一个非常基本的应用程序。零件:1。主应用程序类 那么我就有了pom.xml https://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0 org.springframework.Boot spring-boot-starter-parent 2.1.13.release com.italktocomputer.spring-b

  • 开始构建(第一个)spring boot应用程序,这是我的spring boot main类(github上的完整代码) 下面是pom.xml 我一直得到下面的错误。我需要补充的是什么?为什么我需要添加一个名为'Entity ManagerFactory‘的bean?而且即使在使用了spring boot之后也有必要吗?? 如果有关系的话,我的回购看起来是这样的 .________/\/'___(

  • 我正在使用spring data jpa、hibernate、mysql、tomcat7、maven开发应用程序,但它出现了错误,我试图找出它,但我失败了。 错误是在设置构造函数参数时无法解析对bean“Entity ManagerFactory”引用;没有定义名为“Entity ManagerFactory”的bean;自动连线依赖项注入失败

  • 问题内容: 专家/大师/朋友 我们正在使用Spring 3.2,JPA 2,Hibernate 4.2组合,并在尝试将任何带弹簧注释的bean注入实现的EmtyInterceptor时,遇到了这个奇怪的null指针问题,如下所示。我们已经尝试给这个豆子和一个春天豆子添加注释,但是没有运气。 非常感谢您为解决这个难题提供的任何帮助。 在应用程序的其他任何地方,注入都像没有任何问题的魅力一样。这是我们

  • 我的应用程序无法启动。它由Spring Boot+JPA+SQLite组成。但是Spring Boot和MySQL都运行得很好。我不明白为什么会这样。 错误是 找不到名为“Entity ManagerFactory”的bean O.S.B.D.LoggingFailureAnalysisReporter: **********************************************