我有一个名为Customer
的实体类,我在另一个类中使用此实体对象来设置数据。当我在下面使用该对象时
@Autowired
Customer customer
Spring抱怨请在您的类中配置Bean。
我们可以对实体对象使用自动接线吗?
答案 0 :(得分:1)
实际上,Spring仅对Spring Bean支持@Autowire
。一个Java类只有在由Spring创建时才成为Spring Bean,否则不是。
一种解决方法可能是使用@Configurable
注释您的课程,但您必须使用AspectJ
请查看Spring文档,了解如何使用@Configurable
此外,我不知道您为什么要自动装配实体类?
答案 1 :(得分:1)
我会警告您不要在一个类/用例中混合使用Spring Bean和JPA实体,因为:
答案 2 :(得分:0)
如果您是指JPA @ Entity-annotation,那么Spring只是在告诉您,上下文中没有bean。 在启动/运行时,将扫描应用程序中的类,并且每个带有Spring注释(如@ Component,@ Service等)的类将实例化为bean并放入全局上下文中(Spring applicationcontext)。 然后在扫描过程中发现@Autowired时,使用此上下文查找这些Bean并将其注入其他Bean。
与此相反,@ Entity用于创建JPA的持久性上下文(据我所知),而JPA并不了解Spring及其上下文。
大多数使两个环境相互了解的解决方案大多有点怪异。
答案 3 :(得分:0)
您只能 autowire 仅将其生命周期由Spring IoC container管理的那些bean。
这些bean以xml
形式定义,带有</bean>
标签,或带有一些特殊注释,例如@Bean
,@Component
,@Service
,{{1} }等。
另一方面,
简单来说,实体是一些Java对象,您将需要创建它们,根据业务逻辑自行更新并将它们保存/更新/从DB中删除。它们的生命周期无法通过 Spring IoC容器进行管理。
因此,如果做得对,您永远都不会觉得自己需要@Repository
自动接线!