Spring面向切面编程——Spring实现AOP方式——通过注解实现
2017-10-07 16:05
1276 查看
Log.java:
package log; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class Log { @Before("execution(* service.UserServiceImp.*(..))") public void before(){ System.out.println("方法执行前"); } @After("execution(* service.UserServiceImp.*(..))") public void after(){ System.out.println("方法执行后"); } @Around("execution(* service.UserServiceImp.*(..))") public Object around(ProceedingJoinPoint jp) throws Throwable { System.out.println("环绕前"); System.out.println("签名"+jp.getSignature()); /*执行目标方法*/ Object result = jp.proceed(); System.out.println("环绕后"); return result; } }
UserService.java:
package service; public interface UserService { public void add(); public void delete(); public void search(); public void update(); }
UserServiceImp.java:
package service; public class UserServiceImp implements UserService { @Override public void add() { System.out.println("增加用户"); } @Override public void delete() { System.out.println("删除用户"); } @Override public void search() { System.out.println("查找用户"); } @Override public void update() { System.out.println("修改用户"); } }
applicationContext.xml:
<?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.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="userService" class="service.UserServiceImp"/> <bean id="log" class="log.Log"/> <!--会自动去找aop--> <aop:aspectj-autoproxy/> </beans>
Test.java:
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import service.UserService; public class Test { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService) applicationContext.getBean("userService"); userService.add(); } }
测试结果:
环绕前 签名void service.UserService.add() 方法执行前 增加用户 环绕后 方法执行后
可以加我微信一起学习:
相关文章推荐
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- Spring面向切面编程——Spring实现AOP方式——通过Spring API实现
- Spring 通过注解方式实现AOP切面编程
- spring_由注解实现AOP面向切面编程_实现动态代理
- Spring(十一)使用Spring的注解方式实现面向切面技术AOP
- Spring面向切面编程——Spring实现AOP方式——自定义类实现
- Spring——使用Spring的注解方式实现面向切面技术AOP
- spring AOP面向切面编程的四种实现方式
- Jeecg中通过Spring_AOP+注解方式实现日志的管理
- Spring整理11 -- 面对切面(AOP)1 -- 注解配置的方式实现AOP
- spring_由XML实现AOP面向切面编程_实现动态代理
- idea 实现Spring讲解(Ioc-控制反转)/Aop(面向切面的编程)
- Spring3.0 学习-AOP面向切面编程_Spring AOP的注解模式即Aspectj模式
- Spring AOP 面向切面编程 常见通知实现(前置,后置,环绕,异常)
- 黑马程序员--Spring Aop 面向切面编程,实现前置通知
- Spring学习4-面向切面(AOP)之aspectj注解方式
- Spring学习一:IOC(控制反转)和AOP(面向切面)的xml配置和注解方式
- Spring 面向切面(AOP)编程,注解
- 注解方式实现AOP切面编程
- 面向切面(AOP)之Spring接口方式 schema配置方式 aspectj注解方式