原理前面都已经讲过,在此只放实例。
首先创建切点目标:
package com.spring.aop;
import org.springframework.stereotype.Component;
@Component
public class MusicPerform {
public void perform() {
System.out.println("performaing.......");
}
}
连接点就是上面的:perform()
下面创建切面:
package com.spring.aop;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class Audience {
@Pointcut("execution(* com.spring.aop.MusicPerform.perform())")
public void anymethod(){
}
@Before("anymethod()")
public void silencephone(){
System.out.println("close cell phone!");
}
}
切点:com.spring.aop.MusicPerform.perform()
通知:@Before
切面@Aspect就是:切点+通知
下面去织入(配置):
package com.spring.aop;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@Configuration
@EnableAspectJAutoProxy
@ComponentScan
public class Myconfig {
}
最后创建一个测试用例,查看执行结果:
package com.spring.aop;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=Myconfig.class)
public class MusicTest {
@Autowired
private MusicPerform musicPerform;
@Test
public void test1(){
musicPerform.perform();
}
}
执行结果: