使用WildFly进行Spring依赖注入

时间:2015-01-03 20:52:24

标签: spring dependency-injection wildfly weld

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

如何让我的bean可以访问,这意味着我们如何混合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:类型为SomeBO且带有限定符@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>

1 个答案:

答案 0 :(得分:0)

WildFly实现Java EE规范,这意味着它为CDI提供了一个实现。在WildFly的案例中,它使用Weld的参考实现。 Java EE 6有一些tutorials可以很好地解释CDI。

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