若是有对SpringAOP不太懂的小伙伴能够查看我以前的Spring学习系列博客 SpringBoot的出现,大大地下降了开发者使用Spring的门槛,咱们再也不须要去作更多的配置,而是关注于咱们的业务代码自己,在SpringBoot中使用AOP有两种方式:html
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.1</version> </dependency> <!--织入器--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.1</version> </dependency>
@SpringBootApplication @EnableAspectJAutoProxy(proxyTargetClass = true) public class SpringbootLearnApplication { public static void main(String[] args) { SpringApplication.run(SpringbootLearnApplication.class, args); } }
/** * 教师类 */ @Component public class HighTeacher { private String name; private int age; public void teach(String content) { System.out.println("I am a teacher,and my age is " + age); System.out.println("开始上课"); System.out.println(content); System.out.println("下课"); } ...getter and setter }
/** * 切面类,用来写切入点和通知方法 */ @Component @Aspect public class AdvisorBean { /* 切入点 */ @Pointcut("execution(* teach*(..))") public void teachExecution() { } /************如下是配置通知类型,能够是多个************/ @Before("teachExecution()") public void beforeAdvice(ProceedingJoinPoint joinPoint) { Object[] args = joinPoint.getArgs(); args[0] = ".....大家体育老师生病了,咱们开始上英语课"; Object proceed = joinPoint.proceed(args); return proceed; } }
package cn.lyn4ever.learn.springbootlearn; import cn.lyn4ever.learn.springbootlearn.teacher.HighTeacher; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest(classes = SpringbootLearnApplication.class) @RunWith(SpringRunner.class) public class SpringbootLearnApplicationTests { @Autowired HighTeacher highTeacher; @Test public void contextLoads() { highTeacher.setAge(12); highTeacher.teach("你们好,咱们你们的体育老师,咱们开始上体育课"); } }
结果就是你们想要的,体育课被改为了英语课 java
在pom文件中引入web
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>