spring mvc中配置aop
来源:互联网 发布:java图形化界面开发 编辑:程序博客网 时间:2024/05/21 11:16
简单的controller层切面
1pom文件
<properties><spring.version>4.1.8.RELEASE</spring.version></properties><dependencyManagement><dependencies><!-- spring依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency> <!-- spring 上下文,读取配置文件 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!-- spring aop --><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency> <!-- 注解 --><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency></dependencies></dependencyManagement>
2.配置文件中
2.1首先了解web.xml中的
<context-param><!-- spring相关配置 --><param-name>contextConfigLocation</param-name><param-value>classpath*:/root-context.xml</param-value></context-param><servlet><!-- spring mvc相关配置 --><servlet-name>springServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/web-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet>
2.2spring mvc相关配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd ">
<mvc:annotation-driven /><!-- 注解 --><context:component-scan base-package="com.dinfo.semanti.annotationInter" /> <!-- 相关类扫描 --><aop:aspectj-autoproxy expose-proxy="true"/> <!-- aop相关配置 -->
3.自定义注解,灵活的使用aop
@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface ControllerPointcut {}3.1注解简单说明
@Target:表示该注解可以用于什么地方,可能的ElementType参数:
CONSTRUCTOR:构造器的声明
LOCAL_VARIABLE:局部变量声明
METHOD:方法声明
PACKAGE:包声明 PARAMETER:参数声明
TYPE:类、接口(包括注解类型)或enum声明
@Retention:表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:
SOURCE:注解将被编译器丢弃
CLASS:注解在class文件中可用,但会被VM丢弃
RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。(常用)
@Document:将注解包含在Javadoc中
@Inherited:允许子类继承父类中的注解
注意:
注解可以设定初始值,使用default就可以实现。
注解只有一个元素的时候,该元素名称必须是value,并且在使用该注解的时候可以省略”alue=”。
注解的值必须是确定的,且不能使用null作为值。
注解可能的类型:所有基本类型、String、Class、enum、Annotation、以上类型的数组形式。
4.controller相关的方法
@RequestMapping("/queryApp") @ResponseBody @ControllerPointcutpublic Integer queryApp(HttpServletRequest request){return 1;}5.切面类
//描述切面类@Aspect@Componentpublic class TestAop {public TestAop(){} /* * 定义一个切入点 */ // @Pointcut("execution (* findById*(..))") @Pointcut("@annotation(com.dinfo.semanti.annotationInter.ControllerPointcut)") public void excudeService(){}/* * 配置前置通知,使用在方法aspect()上注册的切入点 * 同时接受JoinPoint切入点对象,可以没有该参数 */@Before("excudeService()")public void before(JoinPoint joinPoint){if(log.isInfoEnabled()){log.info("before " + joinPoint);}}//配置后置通知,使用在方法aspect()上注册的切入点@After("excudeService()")public void after(JoinPoint joinPoint){if(log.isInfoEnabled()){log.info("after " + joinPoint);}}//配置环绕通知,使用在方法aspect()上注册的切入点@Around("excudeService()") public JsonResponse twiceAsOld(ProceedingJoinPoint thisJoinPoint){ System.out.println("执行切面"); try { return (JsonResponse) thisJoinPoint.proceed(); } catch (Throwable e) { return JsonResponse.notOk("访问失败"); } }//配置后置返回通知,使用在方法aspect()上注册的切入点@AfterReturning("excudeService()")public void afterReturn(JoinPoint joinPoint){if(log.isInfoEnabled()){log.info("afterReturn " + joinPoint);}}//配置抛出异常后通知,使用在方法aspect()上注册的切入点@AfterThrowing(excudeService())public void afterThrow(JoinPoint joinPoint, Exception ex){if(log.isInfoEnabled()){log.info("afterThrow " + joinPoint + "\t" + ex.getMessage());}}}
你只看到我在不停的忙碌,却没看到我奋进的热情;
你有你的规则,我有我的选择;
你否定我的现在,我决定我的未来;
你嘲笑我只懂编码,不配享受,我可怜你被代码操纵,而不自知;
你可以轻视我的年轻,我会证明这是谁的时代!
Coding是注定痛苦的旅行,路上少不了Bug和Change,但那又怎样?哪怕通宵达旦,也要编的漂亮!
我是程序员,我为自己代言。
0 0
- spring mvc中配置aop
- Spring MVC 配置 AOP
- spring中aop配置
- spring中aop配置
- Spring MVC和Spring配置AOP
- Spring mvc 对Controller配置AOP
- spring中配置<aop:aspectj-autoproxy/>与<mvc:annotation-driven/>作用以及国际化配置
- Spring MVC中AOP无效、不起作用
- Spring MVC中AOP无效、不起作用,解决方案
- Spring中AOP标签配置!
- spring mvc aop配置事务的相关配置
- spring mvc aop配置事务的相关配置
- Spring MVC AOP编程
- Spring mvc aop 无效
- Spring MVC中配置Velocity
- spring-mvc中配置fastjson
- spring aop 到mvc 的controller配置不起作用
- spring中aop的注解配置方式
- PAT 1030完美数列
- 64. Minimum Path Sum**
- 简单的遗传算法(Genetic algorithms)-吃豆人
- WIFI基本知识整理
- 串行通讯之.NET SerialPort异步写数据
- spring mvc中配置aop
- 毕业论文_开题报告
- java线程学习二
- python解析json
- POJ 1097 Roads Scholar 已被翻译
- 柱状图典型事例及设置白色背景
- Ubuntu 与CentOS 忘记root密码!!!
- NSURLSession-HTTP同步和异步请求
- aapt解析的坑,记录一下防止再次掉入