SpringMVC中对Controller使用AOP

转自http://usherlight.iteye.com/blog/1306111

正确配置spring aop,在controller中使用AOP

在controller中使用AOP的问题主要在于如何让controller能够被检测到。 
controller和其他spring bean的区别在于:controller是由mvc定义并在web.xml中的dispatcher中定义的。

解决方法: 
1、正确定义controller,(比较通用的做法,没有特殊情况的话,大部分应用没有这个问题) 
    a. 将服务层的类都放在ApplicationCotext-*.xml中定义,在context listener中初始化(注意,任何controller都不应该在这里出现),要包括<aop:aspectj-autoproxy/>, 在这里,有没有proxy-target-class="true" 没有关系(具体含义参看下文) 
    b. 定义mvc的配置文件,一般是 <<servlet name>>-servlet.xml,一般(也是推荐做法)使用auto scan来定义所有的controller.关键步骤来了:这个文件也要加入<aop:aspectj-autoproxy proxy-target-class="true"/>, 一定要添加proxy-target-class="true"! 这是用于通知spring使用cglib而不是jdk的来生成代理方法。 
    c. 另外一个事项,controller需要使用@controller注释,而不是继承abstract controller。 
    d. 建议使用aspectj来完成aop

时间: 2024-10-29 19:08:51

SpringMVC中对Controller使用AOP的相关文章

SpringMVC中的@Controller和@RequestMapping到底什么鬼?

1.1 @Controller是什么首先看个例子: @Controller @RequestMapping("/blog") public class BlogController { @RequestMapping("/index") public ModelAndView index(HttpServletRequest request){ ModelAndView mav = new ModelAndView("/index"); Stri

springMVC中的Controller里面定义全局变量

使用SpringMVC的时候,如果想要在Controller中定义一个全局变量,并且实现在不同用户访问程序的时候,所得到的全局变量不一样的(线程安全的),这个时候就可以用Spring的注解@Scope来实现:\ @Controller //把这个bean 的范围设置成session,表示这bean是会话级别的, @Scope("session") public class XxxController{ private List<String> list ; //PostCo

SpringMVC中的controller默认是单例的原因

http://lavasoft.blog.51cto.com/62575/1394669/ 1.性能 :单例不用每次new浪费资源时间. 2.不需要:一般controller中不会定义属性这样单例就不会被影响到.

springmvc 中controller与jsp传值

在springmvc中的controller所对应的函数中,如果需要从*.jsp页面中获取数据,可以自行在函数括号中写,springmvc会自动封装传过来的. spring-mvc.xml 中加入 1   <!-- 自动扫描 --> 2 <context:component-scan base-package="cn.itcast.springmvc.service,cn.itcast.springmvc.web.controller"/> 3  <!--

springmvc中的单例问题

1,springmvc实际上是基于一个叫做DispatcherServlet的servlet的.servlet按照以往的学习经验,他是单事例多线程的. Servlet生命周期 1.装载Servlet.这项操作一般是动态执行的.然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet.2.Server创建一个Servlet的实例3.Server调用Servlet的init()方法4.一个客户端的请求到达Server5.Server创建一个请求对象6.

详解SpringMVC中Controller的方法中参数的工作原理

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,

详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good

目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用 常用HandlerMethodArgumentResolver介绍 常用HandlerMethodReturnValueHandler介绍 本文开头现象解释以及解决方案 编写自定义的HandlerMet

springmvc中针对一个controller方法配置两个url请求

springmvc中针对一个controller方法配置两个url请求 标签: spring mvc孙琛斌 2015-12-10 17:10 2189人阅读 评论(0) 收藏 举报  分类: Spring(8)  版权声明:本文为博主原创文章,未经博主允许不得转载. 记录一个小知识点. 某些应用场景>..你可能需要不同的url请求得到相同的结果,那么你写两个方法总是不太好的,使用下面的方法可以解决这个问题. @RequestMapping(value = { "/item/index.ht

【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,