aop-注解方式
来源:互联网 发布:彩虹无人机 知乎 编辑:程序博客网 时间:2024/06/08 16:27
直接 demo
1.接口
package com.bird.service;public interface PersonServer { public void save(String name); public void update(String name, Integer id); public String getPersonName(Integer id);}
2.实现类
package com.bird.service.impl;import com.bird.service.PersonServer;public class PersonServiceBean implements PersonServer{@Overridepublic void save(String name) {System.out.println("我是save方法");}@Overridepublic void update(String name, Integer id) {System.out.println("我是update()方法");}@Overridepublic String getPersonName(Integer id) {System.out.println("我是getPersonName()方法");return "xxx";}}3.切点
package com.bird.service;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;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.aspectj.lang.annotation.Pointcut;/** * 切面 */@Aspectpublic class MyInterceptor { @Pointcut("execution(* com.bird.service.impl.PersonServiceBean.*(..))") private void anyMethod() { }// 定义一个切入点 @Before("anyMethod() && args(name,id)") public void doAccessCheck(String name, Integer id) { System.out.println(name + "," + id); System.out.println("前置通知"); } @AfterReturning("anyMethod()") public void doAfter() { System.out.println("后置通知"); } @After("anyMethod()") public void after() { System.out.println("最终通知"); } @AfterThrowing("anyMethod()") public void doAfterThrow() { System.out.println("例外通知"); } @Around("anyMethod()") public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { System.out.println("进入环绕通知"); Object object = pjp.proceed();// 执行该方法 System.out.println("退出方法"); return object; }}4.spring 配置 bean
<?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:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><aop:aspectj-autoproxy /><bean id="personServiceBean" class="com.bird.service.impl.PersonServiceBean" /><bean id="myInterceptor" class="com.bird.service.MyInterceptor" /></beans>5.junit 测试
package junit.test;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bird.service.PersonServer;public class SpringAOPTest { @Test public void inteceptorTest() { ApplicationContext ctx = new ClassPathXmlApplicationContext("beanAop.xml"); PersonServer bean = (PersonServer) ctx.getBean("personServiceBean"); bean.update("gaoming", 1); }}6.结果
进入环绕通知gaoming,1前置通知我是update()方法退出方法最终通知后置通知
0 0
- spring aop 注解方式
- AOP之注解方式
- aop-注解方式
- AOP 注解方式
- Spring aop之注解方式
- Spring AOP示例(注解方式)
- Spring 注解方式配置aop:
- 注解方式实现AOP编程
- Spring-注解方式实现AOP
- Spring AOP基础 注解方式
- 注解方式配置spring-aop
- 注解方式实现spring-aop
- spring 注解方式实现aop
- Spring 注解方式实现AOP
- 使用注解方式实现aop
- AspectJ注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 2.5 UI组件-AdapterView及子类(疯狂android学习笔记)
- Lock接口(锁的实现)
- 二分查找算法实现
- Duilib学习总结
- Network In Network学习笔记-ICLR 2014
- aop-注解方式
- Java基础-double的精度问题
- 12个优化Unity/GearVR应用的小技巧, 比较好
- 基于淘宝点击及购买记录的口碑商家推荐——基于物品的协同过滤
- UIKit框架之——UILabel
- git基础
- 由于Mybatis实体数据字段不匹配而查不到的解决办法
- Jfinal中使用post的数据传递方式
- ECMAScript 6入门教程(传送门)