spring4-3-AOP-AspectJ注解-01-简单使用
1.引入类库
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency>
<!-- aop 包 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.6</version>
</dependency>
spring aop 需要额外的jar包:
2.创建配置文件,加入aop,bean,context 命名空间:
3.创建一个接口,及其实现类:
接口:ArithmeticCaculator
package com.l1.spring.aop.impl; public interface ArithmeticCaculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j); }
实现类:ArithmeticCaculatorImp
package com.l1.spring.aop.impl; import org.springframework.stereotype.Component; @Component public class ArithmeticCaculatorImp implements ArithmeticCaculator { @Override public int add(int i, int j) { int result = i + j; return result; } @Override public int sub(int i, int j) { int result = i - j; return result; } @Override public int mul(int i, int j) { int result = i * j; return result; } @Override public int div(int i, int j) { int result = i / j; return result; } }
4.创建一个日志的切面对象-LoggingAspect
首先声明整个对象是一个切面:
4.1 然后声明前置通知方法:
如果想要通知这个对象中的所有public 方法,并且具有两个int参数
如果想要通知这个对象的所有public方法的所有形式的参数:
如果想要所有类型方法,返回值为所有类型:
* 代表匹配任意修饰符及任意返回值, 参数列表中的 .. 匹配任意数量的参数
5.配置文件中配置自动装配:
6. 测试
package com.l1.spring.aop.impl; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { @SuppressWarnings("resource") public static void main(String[] args) { //1.创建Spring IOC容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //2.生产bean 实例 ArithmeticCaculator caculator = ctx.getBean("arithmeticCaculatorImp",ArithmeticCaculator.class); //3.使用bean int result = caculator.add(3, 4); System.out.println(result); } }