首页 > 其他分享 >spring aop 如何切面到mvc 的controller, service

spring aop 如何切面到mvc 的controller, service

时间:2023-06-04 17:07:20浏览次数:45  
标签:lang xml service spring public controller org import aspectj


[size=large][color=red]Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录[/color][/size] [url]http://unkeltao.com/blog/2014/07/22/spring-plus-springmvc-plus-mybatis-aop/[/url]


[size=large][color=red]拦截Controller[/color][/size]
[url]http://yjian84.iteye.com/blog/1920787[/url]

Indeed your controller (annotated by @Controller) and your aspects (annotated by @Aspect) should be in the same Spring context.

Usually people define their controllers in the dispatch-servlet.xml or xxx-servlet.xml and their service beans (including the aspects) in the main applicationContext.xml. It will not work.

When Spring initializes the MVC context, it will create a proxy for your controller but if your aspects are not in the same context, Spring will not create interceptors for them.


这个人说的好像很对啊。[color=red]我把aspectj 和springmvc的配置文件放到一起就可以用到controller上了[/color]。

在servlet.xml加入

<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>




sysLogAspectJ


package com.pandy.core.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * 项目名称: wp_idea_linux
 * 功能说明: 在servlet.xml配置:  <aop:aspectj-autoproxy proxy-target-class="true" />
 * 创建者: Pandy,

 * 版权:
 * 官网:
 * 创建日期: 15-11-13.
 * 创建时间: 下午9:42.
 * 修改历史:
 * -----------------------------------------------
 */
@Aspect
@Component
public class ControllerLogAspect {

    @Pointcut("within(@org.springframework.stereotype.Controller *)")
    public void cutController(){
    }

    @Around("cutController()")
    public Object recordSysLog(ProceedingJoinPoint point) throws Throwable{
        System.out.println("=================================ControllerLogAspect执行方法2");
        return point.proceed();
    }
}




拦截Service等


在applicationContext.xml(扫描service的类的配置文件)加入


<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>




package com.pandy.core.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * 项目名称: wp_idea_linux
 * 功能说明: 在applicationContext.xml(扫描service的配置文件)配置:  <aop:aspectj-autoproxy proxy-target-class="true" />
 * 创建者: Pandy,

 * 版权:
 * 官网:
 * 创建日期: 15-11-13.
 * 创建时间: 下午9:42.
 * 修改历史:
 * -----------------------------------------------
 */
@Aspect
@Component
public class ServiceLogAspect {

    @Pointcut("within(@org.springframework.stereotype.Service *)")
    public void cutService(){
    }

    @Around("cutService()")
    public Object recordSysLog(ProceedingJoinPoint point) throws Throwable{
        System.out.println("=================================ServiceLogAspect执行方法2");
        return point.proceed();
    }
}

标签:lang,xml,service,spring,public,controller,org,import,aspectj
From: https://blog.51cto.com/u_3871599/6411045

相关文章

  • SpringMVC 3使用Fastjson代替Jackson
    [size=large][color=red]Json解析教程(四.FastJson的使用)[/color][/size][url]http://zyjustin9.iteye.com/blog/2020533[/url]1.[代码][Java]代码publicclassUser{privateLongid;privateStringname;publicLonggetId(){retur......
  • spring mvc 请求转发和重定向
    1.需求背景需求:springMVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料,一堆都不是我想......
  • SpringMVC 转换ajax的json数据乱码问题
    在springmvc3中,已经集成了Jackson(json处理器)来处理数据输出json格式,spring中封装的类是[color=blue]org.springframework.http.converter.json.MappingJackson2HttpMessageConverter[/color]这个json转换器,如果是[color=red]springmvc3.2[/color]之前的版本,可以使用[color=b......
  • Spring MVC 全局的异常处理
    Spring异常处理配置[url]http://panyongzheng.iteye.com/blog/2208146[/url]spring基于注解的全局异常处理方式[url]http://panyongzheng.iteye.com/blog/2067110[/url]使用SpringMVC统一异常处理实战[url]http://panyongzheng.iteye.com/blog/2213655[/url][color=red]怎么......
  • Spring MVC文件上传 文件上传解析 Spring MVC文件上传详解
    首先我要说的是springmvc的核心控制器DispachServlet,这个控制器主要是用来起调度作用,他里面默认就带了一个文件上传的视图解析器,叫multipartResolver,而这个视图解析器SpringMVC又提供了一个默认的实现,叫CommonMultipartResolver,说白了这个实现底层用的就是common-fileupload,......
  • Supporting Spring-WS and Spring MVC integration in a project
    [url]http://www.java-allandsundry.com/2011/06/supporting-spring-ws-and-spring-mvc.html[/url]SpringWSandSpringMVCprovidedifferentfrontcontrollerimplementationsasagatewaytothewebserviceandtheMVCfunctionalityrespectiv......
  • Spring CXF实例
    [b][color=red]参考:[/color][/b]CXFSpring整合——又一个helloword![url]http://pphqq.iteye.com/blog/1447800[/url]一个依赖问题:A:[color=red]如果希望以一种一致的方式实现webservice,特别是有跨语言的需求时,应该使用[b]Axis2[/b][/color]B:[color......
  • Spring和MyBatis整合
    框架整合时三层架构的分工  进行SSM框架整合时,两个框架的分工如下所示。MyBatis负责与数据库进行交互。Spring负责事务管理,Spring可以管理持久层的Mapper对象及业务层的Service对象。由于Mapper对象和Service对象都在Spring容器中,所以可以在业务逻辑层通过Service对象调用......
  • Spring3.2 + cxf1.7.3整合
    参考:[url]http://tsinglongwu.iteye.com/blog/832704[/url][color=red][b]测试调试工具介绍[/b][/color][b]1.SoapUI1.6[/b][url]http://webservices.ctocio.com.cn/tips/263/7817763.shtml[/url][b]2.TestMaker[/b][url]http://webservices.ctocio.com......
  • SpringMVC3.2.x + Hibernate4.2.x + ecache + Spring Security 3.0.5
    这只是部分代码,一些代码可以参考:[url]http://panyongzheng.iteye.com/blog/1871418[/url]SpringSecurity3.1最新配置实例[url它自带的附件也上传。SpringSecurity3十五日研究[url]http://www.blogjava.net/SpartaYew/archive/2013/09/23/350630.html[/......