gpt4 book ai didi

spring - 何时使用 Spring @Autowire 注解

转载 作者:行者123 更新时间:2023-12-02 21:35:52 25 4
gpt4 key购买 nike

最近我和 friend 讨论了在实体(JPA)类上使用 Spring @Autowire 注解的问题。

在我们的项目中,我们使用@Autowire注释来注入(inject)Entity,但我的 friend 建议不要在实体类上使用@Autowire注释。当我问为什么?他对此没有正确的答案。所以我只是想知道在实体类上使用 @Autowire 注释是否有任何缺点。

还请通过示例解释何时使用 @Autowire 注释。

提前致谢。

最佳答案

@Entity 和 @Autowire 不可互换。

@Entity 注解表明 JavaBean 是一个持久化实体。这实际上是一个 JPA 注解,而不是 Spring 注解。
@Entity 将由packagesToScan poroerty 在sessionFactory 中使用。

@Autowired:按类型注入(inject)资源,即按类或带注释的字段或承包商的接口(interface)注入(inject)。看我的回答Inject and Resource and Autowired annotations
@Autowired 用于注入(inject)依赖项,作为通过 xml 配置设置它的替代方案

也许这个答案可以帮助你理解 Hibernate - spring annotated entities not scanned from within jar

更新:继以下评论:
Company 是您的域对象,因此在这种情况下您不需要使用 spring。

<bean id="company" class="xxx.Company"/>

上面将返回带有@autowire的相同实例。
即使您切换到scope =“prototype”,我也看不出有任何理由使用spring。您应该有一个将用于 CRUD 公司的服务,例如CompanyService,此服务将是单音,因此您将使用 @Autowire 将其注入(inject)到 Controller ,它将使用您的 JPA 框架来实现 CRUD

要创建一家新公司,您将使用:

Company c = new Company  //this probably will  be binded from your ui form 
companyServic.saveOrUpdate(c);

请参阅以下答案 spring rest service - hibernate dao - annotations - pojo - namedqueries 。用于 DAO 和服务的常见实践。

关于spring - 何时使用 Spring @Autowire 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21423852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com