![](/img/trans.png)
[英]Can we use @Autowired in a Tasklet in Spring Batch?
[英]Can we use @autowired on an entity object in spring?
我有一个名为Customer
的实体类,我在另一个类中使用这个实体对象来设置数据。 当我在下面使用这个对象时
@Autowired
Customer customer
Spring 抱怨请在您的类中配置 bean。
我们可以对实体对象使用自动连接吗?
您只能自动装配那些生命周期由Spring IoC 容器管理的 bean。
这些咖啡豆中所定义xml
与形式</bean>
标记,或与一些特殊注释等@Bean
, @Component
, @Service
, @Repository
等
另一方面,
简单来说,实体是一些你需要创建的 java 对象,根据你的业务逻辑自行更新,并在数据库中保存/更新/删除它们。 它们的生命周期不能由Spring IoC 容器管理。
所以,如果你做得对,你永远不应该觉得你需要自动装配一个entity
!
实际上,Spring 仅对 Spring Beans 支持@Autowire
。 java类只有被Spring创建后才成为Spring Bean,否则不是。
一种解决方法可能是使用@Configurable
注释您的类,但您必须使用 AspectJ
请查看有关如何使用@Configurable
的 Spring 文档
另外,我想知道为什么要自动装配实体类?
我会警告你不要在一个类/用例中混合 Spring Bean 和 JPA 实体,因为:
如果您指的是 JPA @Entity-annotation,则 Spring 只是在告诉您,其上下文中没有 bean。 在启动/运行时应用程序中的类将被扫描,每个用 @Component、@Service 等 spring 注释的类将被实例化为 bean 并放入全局上下文 (Spring applicationcontext)。 当在扫描过程中发现 @Autowired 时,此上下文然后用于查找这些 bean 并将其注入其他 bean。
与此相反,@Entity 在创建 JPA 的 Persistence-Context 期间使用(据我所知),它不知道 Spring 及其上下文。
大多数使两个上下文相互了解的解决方案大多有点hacky。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.