无法在Spring 3.0.6中使用CustomizableTraceInterceptor启用记录



我有一个非常简单的设置

我有一个这样的applicationContext.xml文件:

    <context:component-scan base-package="com.mkyong.common.controller" />
    <bean id="customizableTraceInterceptor"
        class="org.springframework.aop.interceptor.CustomizableTraceInterceptor">
        <property name="enterMessage" value="Entering $[methodName]($[arguments])" />
        <property name="exitMessage" value="Leaving $[methodName](): $[returnValue]" />
    </bean>
    <bean
        class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="beanNames">
            <list>
                <value>*Service</value>
            </list>
        </property>
        <!-- <property name="proxyTargetClass" value="true" /> -->
        <property name="interceptorNames">
            <list>
                <value>customizableTraceInterceptor</value>
            </list>
        </property>
    </bean>
    <mvc:annotation-driven />
    <bean id="wowService" class="org.daud.WowService" scope="prototype" />
</beans>

控制器类也很简单:

@Controller
@RequestMapping("/welcome")
public class HelloController {
    @Autowired
    private WowService wowService;
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        getWowService().printIt();
        model.addAttribute("message", "Spring 3 MVC Hello World");
        return "hello";
    }
    public WowService getWowService() {
        return wowService;
    }
    public void setWowService(WowService wowService) {
        this.wowService = wowService;
    }
}

web.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0" metadata-complete="true">
    <display-name>simple-form</display-name>
    <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>
    <servlet>
        <servlet-name>simple-form</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>simple-form</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

WowService也很简单

public class WowService {
    public String printIt() {
        return "daud";
    }
}

我在我的lib文件夹中有spring jars of version 3.0.6aopalliance-1.0.jarcommons-logging-1.1.1.jar,没有其他。但是,没有记录跟踪。.即,当我们输入WowService的方法或离开它时,没有记录记录。我不知道为什么。

以下行:

new WowService().printIt();

不会创建由容器(弹簧)管理的对象,而您的bean的定义则不考虑。

bean定义:

<bean id="wowService" class="org.daud.WowService" scope="prototype" />

看起来不错,但是您不使用它。

将控制器更改为:

@Controller
@RequestMapping("/welcome")
public class HelloController {
    @Autowired
    WowService wowService;
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        wowService.printIt();
        model.addAttribute("message", "Spring 3 MVC Hello World");
        return "hello";
    }
}

相关内容

  • 没有找到相关文章

最新更新