MethodInterceptor - Não Interceptando metodos de classes

0 respostas
A

Pessoal,

Estou tentando implementar logs na minha aplicação utilizando o MethodInterceptor, bom iremos utilizar para mais coisas além de log, mas a principio é apenas isso. No entando não consigo fazer com que os métodos do meu sistema sejam inteceptados. Ele consegue interceptar qualquer método, seja ele java.util.; javax.; etc porém nas minhas classes mesmo não.

Segue como está configurado no meu XML, nele eu determino para ele pegar todas as classes que terminem com Controller, Util e Impl.

<bean name="methodLoggingInterceptor" class="net.alv.captacao.comum.log.LoggerInterceptor"/>
<bean name="proxyCreator" class="net.alv.captacao.comum.log.MyProxy">
    <property name="beanNames">
        <list merge="true">
			<value>*Controller</value>
			<value>*Util</value>
			<value>*Impl</value>
        </list>
    </property>
    <property name="interceptorNames">
        <list>
            <value>methodLoggingInterceptor</value>
        </list>
    </property>
</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
  <property name="interceptors">
	   <list>
		   <ref bean="methodLoggingInterceptor"/>
	   </list>
   </property>
</bean>

A classe LoggerInterceptor eu implementei os métodos

public Object invoke(MethodInvocation method) throws Throwable {
		System.out.println("");System.out.println("");
		System.out.println("------------------------------> invoke <------------------------------");
		String classMethodIdentifier = method.getMethod().getDeclaringClass() + "." + method.getMethod().getName();
		System.out.println(classMethodIdentifier + " starts");
		Object result = method.proceed();
		System.out.println(classMethodIdentifier + " finished");
		System.out.println("------------------------------> invoke <------------------------------");
		System.out.println("");System.out.println("");
		return result;
	}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    throws ServletException {
		System.out.println("");System.out.println("");
		System.out.println("------------------------------> INICIANDO PREHANDLE <------------------------------");
		System.out.println("handler.getClass().getSimpleName() = " + handler.getClass().getSimpleName());
		System.out.println("\n Class = " + handler.getClass().getName());
		System.out.println("\n request.getMethod().toString() = " + request.getMethod().toString());
		System.out.println("------------------------------> FINALIZANDO PREHANDLE <------------------------------");
		System.out.println("");System.out.println("");
		//Log.trace("Executando Procedure 33333333333333333333333333333333333333333333333333");
	return true;

Como deve ter percebido eu misturei um pouco os interceptors. Com o metodo preHandle eu consigo verificar a execução das classes Controllers, e apenas elas. E com o método invoker eu consigo interceptar os métodos.

Alguém saberia me explicar o porque ele não interceptar os métodos das minhas classes e me ajudar a fazer isso. Minha aplicação, que é web claro, utiliza spring, claro, por isso tenho varias projetinhos nela.

Podem me ajudar

Criado 28 de outubro de 2010
Respostas 0
Participantes 1