gpt4 book ai didi

使用 WildFly 进行 Spring 依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 09:44:02 24 4
gpt4 key购买 nike

我有一个 Web 应用程序(war 文件)依赖于(Maven)另一个使用 Spring 进行依赖注入(inject)的项目(jar 文件)。所以在另一个项目中,我有几个 xml 文件来声明我的 bean,在我的例子中是业务对象。我开始使用 WildFly 而不是 Tomcat/Jetty,显然有一个叫做 Weld 的东西负责 DI。我的网络应用程序不使用 Spring(目前),它只是一个简单的 Jersey RESTful API。
我希望我的业务对象在我的资源( Controller )中是可注入(inject)的(@Inject)。

我如何让我的 beans 可访问,也就是说我们如何混合使用 Spring DI 和 WildFly DI?

现在在我的网络应用程序项目中,我有一个 WEB-INF/beans.xml 文件:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:weld="http://jboss.org/schema/weld/beans"
xsi:schemaLocation="
http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd
http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd
bean-discovery-mode="all">
</beans>

但是当我尝试部署时,对于这段代码:

@Inject SomeBO myBO;

我收到这个错误:

WELD-001408: Unsatisfied dependencies for type SomeBO with qualifiers @Default

谢谢。

编辑
我需要用 xml 文件导入我的 bean,我不想注释它们,例如我有一个包含这样声明的 bo.xml 文件(Spring bean):

    <bean id="com.xxx.bo.SomeBO" parent="com.xxx.bo._AbstractBO">
<property name="target">
<bean class="com.xxx.bo.SomeBOImpl">
<property name="DAO" ref="com.xxx.dao.SomeDAO"/>
</bean>
</property>
</bean>

最佳答案

WildFly 实现了 Java EE 规范,这意味着它为 CDI 提供了一个实现。 .在 WildFly 的例子中,它使用了 Weld 的引用实现。有一些tutorials对于 Java EE 6,应该可以很好地解释 CDI。

就您的错误而言,您可能只需要使用 @Named 或有效的 CDI 注释来注释您的 SomBO 实现,使其成为 CDI 托管 bean。

关于使用 WildFly 进行 Spring 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27759416/

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