0

私は default-context.xml を持っています

<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd">
<!-- some other beans -->
<bean id="licenseTestingAdvice" class="mypackage.LicenseTestingAdvice" />
<bean id="jdbcTemplate" class="mypackage.ProxyFactoryBean">
    <property name="interceptorNames">
        <list>
            <idref bean="licenseTestingAdvice" />
        </list>
    </property>
    <property name="target">
        <value>mypackage.JDBCTemplate</value>
    </property>
    <property name="proxyTargetClass" value="true" />
</bean>

そして、LicenseTestingAdvice.java:

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

import java.lang.reflect.Method;

public class LicenseTestingAdvice implements MethodInterceptor {
    @Override
    public Object invoke(MethodInvocation inv) throws Throwable {
        Method method = inv.getMethod();

        System.out.println(String.format(">> Method %s was called before", method.getName()));
        inv.proceed();
        System.out.println(String.format(">> Method %s was called after", method.getName()));

        return null;  //To change body of implemented methods use File | Settings | File Templates.
    }
}

JDBCTemplate クラスの execute() メソッドを呼び出すと、invoke() メソッドが呼び出されません。これを修正する方法は?

4

1 に答える 1

0

これ<value>mypackage.JDBCTemplate</value>は、Bean または内部 Bean への参照である必要があります。また、インターセプター名は、Bean への参照ではなく、Bean の名前にする必要があります。何かのようなもの:

<bean id="myJdbcTemplate" class="mypackage.JDBCTemplate"/>
<bean id="jdbcTemplate" class="mypackage.ProxyFactoryBean">
    <property name="interceptorNames">
        <list>
            <value>licenseTestingAdvice</value>
        </list>
    </property>
    <property name="target" ref="myJdbcTemplate"/>
    <property name="proxyTargetClass" value="true" />
</bean>
于 2012-08-09T09:18:44.507 に答える