gpt4 book ai didi

java - 将 CDI/EJB 注释迁移到 Spring 注释

转载 作者:行者123 更新时间:2023-12-04 05:55:30 24 4
gpt4 key购买 nike

我正在尝试用 Spring 注释替换我的 CDI/EJB 注释。但我正在努力如何正确地做到这一点。

这是我在 CDI/EJB 中的内容:

@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
class Service {
@Inject
EntityManager em;
}


@Named
@RequestScoped
class Facade {
@Inject
Service service;
}

现在我会做以下事情:
@Stateless
@Transactional
@Repository
class Service {
@Inject
EntityManager em;
}

无国籍人呢? Spring 的等价物是什么?
显然我不能只删除这个注释,然后我得到这些异常:
javax.el.PropertyNotFoundException: /input.xhtml @15,30 registerButtonAction="#{facade.createNew()}": The class 'Facade$Proxy$_$$_WeldClientProxy' does not have the property ...

更远:
@Named
@Service
class Facade {
@Autowired
Service service;
}

我是否必须简单地替换所有 @Inject带有 @Autowired 的注释?
Spring 中有没有处理 EL 命名的东西,以便我可以删除 @Named ?

我是否也必须注释我的 JPA 实体?

最佳答案

StatelessStateful bean 是EJB概念,但 Spring通过 Service Beans 提供类似的服务。把 @Service在您的业务逻辑类中添加注释,如果您希望 bean 是“无状态”或“有状态”,只需配置您的 bean 范围(如 RequestSession )。
Spring也有一个内置的事务管理 API,所以你的事务注解可能需要改变。

最后,Spring与许多持久性框架兼容,包括 JPA .如果您想保留 JPA没关系,如果您愿意,可以随意将其更改为其他技术(可能是 HibernateMyBatis )

关于java - 将 CDI/EJB 注释迁移到 Spring 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9556532/

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