要求
業務類
package com.zyx.core.aop.anno;
public class Examing {
// 業務内部的方法
public void testing(){
System.out.println("-----考試進行中-----");
}
}
增強類 — 切面
package com.zyx.core.aop.anno;
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.stereotype.Component;
@Component
@Aspect
public class Processing {
// 抽取公共切點
@Pointcut(value="execution(* com.zyx.core.aop.anno.Examing.*(..))")
private void all() {}
// 通過Before通知注解實作
@Before(value = "all()")
public void Before1() {
System.out.println("-----緊張地複習中-----");
}
// 通過After通知注解實作
@After(value="all()")
public void After1() {
System.out.println("-----刺激地閱卷中-----");
}
}
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"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!-- 啟用注解 -->
<context:annotation-config/>
<!-- 啟用元件掃描,排除@Controller元件 -->
<context:component-scan base-package="com.zyx.core.aop.anno"></context:component-scan>
<!-- 開啟AspectJ生成代理對象 ===> 隻要類上面添加了AspectJ注解的,就會自動生成代理對象 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<bean id="exam" class="com.zyx.core.aop.anno.Examing"></bean>
</beans>
測試類
package com.zyx.core.aop.anno;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 1.配置xml檔案路徑
String xmlPath = "classpath:spring/ApplicationContextAopAnno.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(xmlPath);
// 2.執行個體化對象
Examing exam = (Examing) context.getBean("exam");
// 3.調取業務方法
exam.testing();
}
}
結果