勾选的包都是实现aop注入方法的必须包,其中日志jar包也是必须导入的,否则会报错。之前笔者以为是可以不用导入的,结果笔者报错了,所以就没有在图中勾选。^_^
可能有些读者不知道我上传包的作用,下面对包的功能介绍:
第一个画勾的包是AspectJ的相关依赖包
基于aspectJ的注解AOP
1.使用注解方式实现AOP操作
第一步:创建切入点类,并且通过Spring的JavaBean管理注释来创建类对象
Book类:
@Component(value="book")//创建对象
public class Book {
public void buy(){
System.out.println("平常我们的动作:老板,我要买书!!!");
}
}
第二步:创建增强类,并且通过Spring的JavaBean管理注释来创建对象,配置Aspect注释来标识增强类:
@Component(value="bookAdvice")//创建增强类对象
@Aspect//配置增强类
public class BookAdvice {
@Before(value="execution(* cn.domarvel.entity.Book.buy(..))")//把增强类注入到类的方法中去,并且配置是前置增强还是后置增强。
public void buyCheckBefore(){
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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 要使用注解来管理JavaBean对象要导入aop那个jar包以及context这个约束 -->
<!-- 要使用注解来实现aop的方法注入,要导入aop这个jar包,以及导入aop约束 -->
<!-- 第一个:对象让Spring管理是IOC思想,第二个:注入方法是AOP的思想 -->
<context:component-scan base-package="cn.domarvel"></context:component-scan><!-- 自动进行扫描包下面的类是否需要创建JavaBean对象,并且交给Spring容器进行管理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy><!-- 配置aop动态代理注解扫描,进行自动代理 -->
</beans>
客户端代码:
public class BookClient {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Book book=(Book)context.getBean("book");
book.buy();
}
}
/*
输出结果:
前置增强:老板你的书怎么有点破啊!!而且版本也不是最新的!!
平常我们的动作:老板,我要买书!!!
*/