У меня есть проект 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, однако контексты создаются, но, похоже, аннотации не читаются.
Кто-нибудь знает, чего не хватает?