aspectBean.java applicationContext.xml Maintest文件: 執行: ...
public interface IHello { public void sayHello(String str); } public class Hello implements IHello { @Override public void sayHello(String str) { // TODO Auto-generated method stub System.out.println("你好"+str); } }
aspectBean.java
import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; //引入Aspect註解,聲明切麵 @Aspect public class aspectBean { //定義為切入點 @Pointcut("execution(* hello.*(..))") public void log() { } @Before(value="log()") //在切入點之前執行 public void startLog() { System.out.println("開始記錄"); } @After(value="log()") //在切入點之後執行 public void endLog() { 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" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <!-- 啟動aspectj --> <aop:aspectj-autoproxy/> <bean id="apbean" class="com.pb.aspectBean"></bean> <bean id="he" class="com.pb.Hello"></bean> </beans>
Maintest文件:
public static void main(String[] args) { // TODO Auto-generated method stub ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); IHello hello=(IHello)context.getBean("he"); hello.sayHello("訪客"); }
執行: