注解实现AOP
需求:在指定包下的所有类中的有方法都加上前置和后置通知。
1.AOP类,使用的注解@Aspect表示当前的类为AOP类
@Aspect
public class LogAop {
@Before("execution(* *..service.*.*(..))")//匹配报下的所有方法
public void registerUserLogin(){
System.out.println("开始记录用户登录的情况");
}
@After("execution(* *..service.*.*(..))")
public void doAfter(){
System.out.println("用户退出记录登录时间");
}
}
2.在配置类中注册AOP类使用@Bean标签进行注册
@Bean
public LogAop logAop(){
return new LogAop();
}
3.在配置上加上注解@EnableAspectJAutoProxy开启AOP注解驱动
@Configuration
@Import(value = {Color.class, Red.class, MyImportBean.class, UserLoginService.class})
@ComponentScan(value = {"com.itguigu.aop"})
@EnableAspectJAutoProxy//开启AOP注解驱动
public class MyConfiguration2 {
/**
* 需求根据操作系统进行创建对象
*
*/
@Test
public void test5() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration2.class);
UserLoginService bean = (UserLoginService) context.getBean("com.itguigu.service.UserLoginService");
bean.doSome();
//printName(context);
}