SpringAOP 使用注解的简单使用
1. 导入jar包
/SpringAOPmy/lib/com.springsource.net.sf.cglib-2.2.0.jar
/SpringAOPmy/lib/com.springsource.org.aopalliance-1.0.0.jar
/SpringAOPmy/lib/com.springsource.org.aspectj.tools-1.6.6.RELEASE.jar
/SpringAOPmy/lib/commons-logging.jar
/SpringAOPmy/lib/junit-4.8.2.jar
/SpringAOPmy/lib/spring-aop-4.1.0.RELEASE.jar
/SpringAOPmy/lib/spring-aspects-4.1.0.RELEASE.jar
/SpringAOPmy/lib/spring-beans-4.1.0.RELEASE.jar
/SpringAOPmy/lib/spring-context-4.1.0.RELEASE.jar
/SpringAOPmy/lib/spring-core-4.1.0.RELEASE.jar
/SpringAOPmy/lib/spring-expression-4.1.0.RELEASE.jar
2.配置文件
<?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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 开启自动扫描 --> <context:component-scan base-package="com.aspect.annonaction"></context:component-scan> <!--Spring 中使用aspectj 包中的@Aspect 注解标注的当前组件为切面 --> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> </beans>
3. 注解切面方法
package com.aspect.annonaction; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Component @Aspect public class AOP { @Before("execution(* com.aspect.annonaction.Testss.say())") public void before() { System.out.println("前置通知"); } @AfterReturning(pointcut="within(com.aspect.annonaction.Testss)",returning="obj") public void afterreturning(JoinPoint jp,Object obj) { System.out.println(jp.getSignature()); System.out.println("返回值的类型:"+obj); } @AfterThrowing(pointcut="execution(* com.aspect.annonaction.Testss.say())",throwing="e") public void exception(Throwable e) { System.out.println("异常通知:"+e.getMessage()); } @Around(value="within(com.aspect.annonaction.Testss)") public void around(ProceedingJoinPoint pjp) { System.out.println("前置通知"); try { pjp.proceed(); System.out.println("后置通知"); } catch (Throwable e) { System.out.println("异常通知"); e.printStackTrace(); } System.out.println("最终通知"); } }
4. 测试
package com.aspect.annonaction; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Component; @Component public class Testss { public void say() { System.out.println("张韶涵"); } @Test public void test1 () { ApplicationContext ac=new ClassPathXmlApplicationContext("ApplicationContext2.xml"); Testss t=(Testss) ac.getBean("testss"); System.out.println(t); t.say(); } }
end
SpringAOP 使用注解的简单使用的更多相关文章
- Spring AOP注解形式简单实现
实现步骤: 1:导入类扫描的注解解析器 命名空间:xmlns:context="http://www.springframework.org/schema/context" xsi ...
- spring注解开发中常用注解以及简单配置
一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...
- Java注解--实现简单读取excel
实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Retentio ...
- java基础强化——深入理解java注解(附简单ORM功能实现)
目录 1.什么是注解 2. 注解的结构以及如何在运行时读取注解 2.1 注解的组成 2.2 注解的类层级结构 2.3 如何在运行时获得注解信息 3.几种元注解介绍 3.1 @Retention 3.2 ...
- Springboot使用自定义注解实现简单参数加密解密(注解+HandlerMethodArgumentResolver)
前言 我黄汉三又回来了,快半年没更新博客了,这半年来的经历实属不易,疫情当头,本人实习的公司没有跟员工共患难, 直接辞掉了很多人.作为一个实习生,本人也被无情开除了.所以本人又得重新准备找工作了. 算 ...
- SpringAOP+注解实现简单的日志管理
今天在再次深入学习SpringAOP之后想着基于注解的AOP实现日志功能,在面试过程中我们也经常会被问到:假如项目已经上线,如何增加一套日志功能?我们会说使用AOP,AOP也符合开闭原则:对代码的修改 ...
- hibernate注解的简单应用
注解代替了我们用的*.hbm.xml文件.简少了我们的代码量:应用简单. @Override 用途:重写父类的同名方法 单元测试注解 @Test 用途:用于测试 @Before 用途:单测方法走之前执 ...
- 关于spring的IOC和DI的xml以及注解的简单介绍
xml 一 目的:通过ApplicationContext对象的getBean方法获取所需类的对象. 编写一个service类 public class service { private Strin ...
- Spring-AOP 基于注解的实现
一.AOP: 是对OOP编程方式的一种补充.翻译过来为“面向切面编程”. 可以理解为一个拦截器框架,但是这个拦截器会非常武断,如果它拦截一个类,那么它就会拦截这个类中的所有方法.如对一个目标列的代理, ...
随机推荐
- 联想电脑硬盘保护系统EDU8.0.1iso安装
管理306机房4年了,15年我带领的第一批学生参加吉林省职业院校技能大赛的时候,领导把这个机房交给我负责.那个时候这个机房的机器是全校的顶配,30台DELL16G内存,2T硬盘,I7处理器,后面是6组 ...
- DotNetSpeech----文本转wave语音文件
wav操作引入dll(DotNetSpeech.dll),引入以后需要选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False.不然会提示无法嵌入互操作类型"Spee ...
- nosql概叙
关系型数据库管理系统:按照预先设置的组织架构,将数据存储在物理介质上 数据之间可以做关联操作
- mysql 三表索引优化
建表语句 CREATE TABLE IF NOT EXISTS `phone`( `phoneid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` ...
- Linux密码复杂度问题
转:http://hunkz.blog.51cto.com/6157447/1630369
- XtraReport1添加参数
解决了在report有个BeforePrint事件这里面直接 C# code ? 1 string year = this.Parameters["year"].Value.T ...
- vue - @click 传参删除
<template> <div id="app"> <div v-for="todo in todos" :key ...
- Android框架模式
参考大佬写的文章:https://www.jianshu.com/p/f17f5d981de7 1.MVC模式 Model:模型层,负责处理数据的加载或存储 View:视图层,负责界面数据的展示,与和 ...
- js的执行和调试
JavaScript 是指在浏览器运行的脚本 脚本就是剧本,在指定场景,特定时间,规定角色的对白,动作,情绪的变化 并且js是同步的,单线程的执行脚本 同步异步 js的运行是同步的, 运行完第一行才会 ...
- 调用dos
两个方法 function RunDosCommand(Command: string): string; var hReadPipe: THandle; hWritePipe: THandle; S ...