На самом деле проблема была в весенней версии
Я использовал 3.2.0, которая не поддерживает Java 8. Когда я перешел на 4.0.0, все стало нормально.
В заключение.Для использования Spring Spring в портлетном проекте для liferay я должен:
- Добавить прослушиватель контекста в мой файл WEB-INF / web.xml
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
- Тогдав каждом портлете используйте следующий метод для инициализации
@Autowired
поля
@Override
public void init() throws PortletException {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
- У меня есть следующая единица сохранения
<persistence-unit name="departments">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.aimprosoft.dao.model.Employee</class>
<class>com.aimprosoft.dao.model.Department</class>
<properties>
<property name="hibernate.connection.username" value="username"/>
<property name="hibernate.connection.password" value="password"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/departments"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
</properties>
</persistence-unit>
- Наконец, контекст веснывыглядит следующим образом
<context:annotation-config/>
<context:component-scan base-package="com.aimprosoft"/>
<bean id="departments" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="WEB-INF/persistence.xml"/>
</bean>
<bean id="textResource" class="java.util.ResourceBundle" factory-method="getBundle">
<constructor-arg value="text_bundle"/>
</bean>
<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"/>