Injeção em um Interceptor Struts 2 com Spring 2.5

0 respostas
furacao123

Estou iniciando um projeto com Struts2 + Spring 2.5...vi varias video aulas do assunto, consegui fazer os testes nos models, mas estou tendo problemas na hora de injetar um objeto repository para uma classe Interceptor

segue a classe interceptor
package br.com.intesis.producaonfe.controller;

import br.com.intesis.producaonfe.domain.repository.UsuarioRepository;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class VerificarInstalacaoInterceptor implements Interceptor {

    private UsuarioRepository repository;
    private static final String INSTALAR = "instalar";

    public void setRepository(UsuarioRepository repository) {
        this.repository = repository;
    }
    
    @Override
    public void init() {
    }

    @Override
    public void destroy() {
    }

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        if (repository.findAll().isEmpty()) {
            return INSTALAR;
        } else {
            return invocation.invoke();
        }
    }
}

e o objeto que pretendo fazer a DI é o objeto repository

segue o arquivo struts.xml
<struts>
  
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="verificarInstalacao"
        class="br.com.intesis.producaonfe.controller.VerificarInstalacaoInterceptor" />
            <interceptor-stack name="mensageriaNFeInstalacaoStack">
                <interceptor-ref name="exception" />
                <interceptor-ref name="alias" />
                <interceptor-ref name="servletConfig" />
                <interceptor-ref name="i18n" />
                <interceptor-ref name="prepare" />
                <interceptor-ref name="chain" />
                <interceptor-ref name="debugging" />
                <interceptor-ref name="profiling" />
                <interceptor-ref name="scopedModelDriven" />
                <interceptor-ref name="modelDriven" />
                <interceptor-ref name="fileUpload" />
                <interceptor-ref name="checkbox" />
                <interceptor-ref name="staticParams" />
                <interceptor-ref name="actionMappingParams" />
                <interceptor-ref name="params">
                    <param name="excludeParams">dojo\..*,^struts\..*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError" />
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="jsonValidation" />
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
            <interceptor-stack name="mensageriaNFeStack">
                <interceptor-ref name="verificarInstalacao" />
                <interceptor-ref name="mensageriaNFeInstalacaoStack" />
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="mensageriaNFeStack" />
        <default-action-ref name="home" />
        <global-results>
            <result name="instalar" type="chain">
                <param name="actionName">instalar!input</param>
                <param name="namespace">/instalarSistema</param>
            </result>
            <result name="acesso_negado">/acessonegado.jsp</result>
        </global-results>
        <action name="home" class="br.com.intesis.producaonfe.controller.HomeAction">
            <result>/home.jsp</result>
        </action>
        <action name="login" class="br.com.intesis.producaonfe.controller.LoginAction">
            <result name="input">/home.jsp</result>
            <result>/home.jsp</result>
        </action>
        <action name="logout" class="br.com.intesis.producaonfe.controller.LoginAction" method="logout">
            <result>/home.jsp</result>
        </action>
    </package>
    
    <package name="instalarSistema" namespace="/instalarSistema" extends="default">
        <default-interceptor-ref name="mensageriaNFeInstalacaoStack" />
        <default-action-ref name="instalar!input" />
        <action name="instalar!*" method="{1}"
      class="br.com.intesis.producaonfe.controller.InstalarSistemaAction">
            <result name="input">/WEB-INF/pages/instalarSistema/form.jsp</result>
            <result>/WEB-INF/pages/instalarSistema/result.jsp</result>
        </action>
    </package>
 
</struts>
e aqui o arquivo applicationContext do Spring
<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.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" xmlns:aop="http://www.springframework.org/schema/aop">


    <bean id="infoUsuario" class="br.com.intesis.producaonfe.controller.InfoUsuario" scope="session">
        <aop:scoped-proxy />
    </bean>
    
    <bean id="loginAction" class="br.com.intesis.producaonfe.controller.LoginAction">
        <property name="repository" ref="usuarioRepository"/>
    </bean>
    
    <bean id="verificarInstalacaoInterceptor" class="br.com.intesis.producaonfe.controller.VerificarInstalacaoInterceptor">
        <property name="repository" ref="usuarioRepository"/>
    </bean>
    
    <bean id="usuarioRepository" class="br.com.intesis.producaonfe.infrastructure.UsuarioDecorator">
        <property name="dao">
            <bean name="GenericJPADAO" class="br.com.intesis.producaonfe.infrastructure.dao.GenericJPADAO">
                <constructor-arg value="br.com.intesis.producaonfe.domain.Usuario" />
            </bean>
        </property>
    </bean>


</beans>

se eu jogo em teste funciona normalmente a injecao do bean usuarioRepository, ja o do interceptor nao, o que estou fazendo de errado?

Criado 11 de agosto de 2011
Respostas 0
Participantes 1