Maven3不会处理弹簧注释?

时间:2012-01-25 14:55:17

标签: spring maven annotations

我有一个Spring3.1 / Hibernate3项目,其中app-context是通过注释类+组件扫描来构建的。当我使用eclipse构建它时,一切正常,但是使用maven构建它似乎注释被忽略(没有注入,服务为空等)。

我们有编译器插件,如下所示:

<artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
    </configuration>

“main”spring应用程序上下文通过contextloaderlistener从一个相关的web项目(服务/ daos等驻留在一个单独的Common-project中)加载。为了避免为每个web项目实例化一个上下文(我们有一个很少,是的,可以质疑,但..)我们使用本博客详述的tecnique: http://blog.springsource.org/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/

这是从实例化上下文的web-xml中删除的:

    <listener>
    <display-name>ContextLoaderListener</display-name>
    <listener-  class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:beanRefContext.xml</param-value> 
</context-param>

    <context-param>
        <param-name>parentContextKey</param-name>
        <param-value>common.context</param-value>
    </context-param>

    <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>SpringHibernate</param-value>
    </context-param> 
位于Common-project中的BeanRefContext如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="common.context" class="org.springframework.context.support.ClassPathXmlApplicationContext">
        <constructor-arg>
            <list>
                <value>appContext.xml</value>
            </list>
        </constructor-arg>
    </bean>

</beans>

这将依次启动带有annotation-config和组件扫描定义的普通ClassPathXmlApplicationContext:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/context http://www.springframework.org /schema/context/spring-context-3.0.xsd">

        <context:annotation-config/>

    <import resource="persistenceContext.xml" />
    <import resource="businessContext.xml" />

    <context:component-scan base-package="com.XX.supplierportal.common.spring">
        <context:exclude-filter type="regex"    expression="com.XX.supplierportal.common.spring.*Test.java"/>
    </context:component-scan>
    <context:component-scan base-package="com.XX.supplierportal.userdirectory.incoming"/>

</beans>

如上所述,所有内容都在eclipse中实现,并在多个Web项目中共享包含服务等的一个common-applicationContext,并使用maven构建它,但是上下文得到实例化但似乎没有读取注释。

任何人都知道缺少什么?

2 个答案:

答案 0 :(得分:1)

使用了一段时间后,我们看到它是javax.annotation.Resource注释无效,我们终于意识到maven构建缺少jsr250-api.jar( bonk self

答案 1 :(得分:0)

我很确定这与maven无关,但是使用弹簧配置。

如何实例化Spring容器?您使用哪种ApplicationContext实现?请显示启动Spring的代码以及至少部分Spring XML。