1.接口类
package SpringTestAOP.service;
public interface Calculator {
public int add(int i,int j);
}
2.实现类
package SpringTestAOP.impl;
import SpringTestAOP.service.Calculator;
public class CalculatorImpl implements Calculator {
@Override
public int add(int i, int j) {
int result = i+j;
return result;
}
}
3.切面类
package SpringTestAOP.config;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import java.util.Arrays;
import java.util.List;
@Aspect
public class CalculationAnnotation {
@Pointcut("execution(* SpringTestAOP.impl.CalculatorImpl.*(..))")
private void pointCutMethod() {
}
@Before("pointCutMethod()")
public void before(JoinPoint join){
String mathName=join.getSignature().getName();
List<Object> args = Arrays.asList(join.getArgs());
System.out.println("前置通知---->before 方法名是:"+mathName+"\t参数列表是:"+args);
}
@After("pointCutMethod()")
public void after(){
System.out.println("后置通知---->after....");
}
}
4.配置文件(其中有导入其他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">
<aop:aspectj-autoproxy/>
<bean id="check" class="SpringTestAOP.config.CalculationAnnotation"/>
<import resource="test.xml"/>
</beans>
5.被导入的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="calculator" class="SpringTestAOP.impl.CalculatorImpl"/>
</beans>
6.验证类
package SpringTestAOP.demo;
import SpringTestAOP.service.Calculator;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BeanTest2 {
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("SpringTestAOP/config/applicationContext.xml");
Calculator calculator = (Calculator) factory.getBean("calculator");
calculator.add(1,2);
calculator.sub(2,1);
}
}
866

被折叠的 条评论
为什么被折叠?



