Пружинная автопроводка аннотации в liferay 7.2 - PullRequest
0 голосов
/ 11 июля 2019

Привет всем

Я хочу использовать пружинный сердечник в liferay 7.2 с аннотацией @Autowired.Итак, у меня есть следующий портлет

package com.aimprosoft.module;

import com.aimprosoft.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;

import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import java.io.IOException;

public class SamplePortlet  extends GenericPortlet {

    @Autowired
    private EmployeeService employeeService;

    @Override
    protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
        response.getWriter().println(employeeService.toString());
    }
}

Итак, что я должен сделать в web.xml или portlet.xml, чтобы установить прослушиватель контекста Spring-Core?Например, в приложении веб-сервлета я должен добавить

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

1 Ответ

0 голосов
/ 11 июля 2019

На самом деле проблема была в весенней версии

Я использовал 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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...