Maven3 не будет обрабатывать весенние аннотации? - PullRequest
2 голосов
/ 25 января 2012

У меня есть проект Spring3.1 / Hibernate3, где контекст приложения создается путем аннотирования классов + сканирования компонентов. Все работает нормально, когда я собираю его с помощью eclipse, но, собрав его с помощью maven, кажется, что аннотации пропускаются (ничего не добавляется, сервисы нулевые и т. Д.).

У нас есть плагин компилятора, как показано ниже:

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

"Основной" контекст приложения Spring загружается через contextloaderlistener из одного из связанных веб-проектов (services / daos и т. Д. Находится в отдельном Common-проекте "). Чтобы избежать создания одного контекста для каждого веб-проекта (у нас есть немногие, да, можно сомневаться в этом, но ..) мы используем технику, описанную в этом блоге: 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> 

BeanRefContext, который находится в Common-проекте, выглядит так:

<?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>

И это, в свою очередь, запускается и обычный ClassPathXmlApplicationContext с определениями annotation-config и сканирования компонентов:

<?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 и совместном использовании ONE common-applicationContext, содержащего сервисы и т. Д., Среди ряда веб-проектов, создавая его с помощью maven, однако контексты создаются, но, похоже, аннотации не читаются.

Кто-нибудь знает, чего не хватает?

Ответы [ 2 ]

1 голос
/ 26 января 2012

Поработав некоторое время с этим, мы увидели, что это была аннотация javax.annotation.Resource, которая не работала, и мы наконец поняли, что в сборке maven отсутствует jsr250-api.jar ( bonk self )

0 голосов
/ 25 января 2012

Я почти уверен, что это не имеет ничего общего с maven, но с конфигурацией пружины.

Как вы создаете экземпляр контейнера Spring?Какую реализацию ApplicationContext вы используете?Пожалуйста, покажите код, который запускает Spring, и хотя бы части вашего Spring XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...