AspectJ的注解方式实现AOP

1.引入spring基础包
2.引入aspectJ的jar包
  com.springsource.org.aopalliance-*.jar
  com.springsource.org.aspectj.weaver-*.jar

3.spring.xml加入相关配置

    <!-- 设置使用注解的类所在的包 -->
    <context:component-scan base-package="net.shibit.*"/>
    <!-- 使AspectJ注解起作用:自动为匹配的类生产代理对象 -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

4.实现目标类

public class AServiceImpl implements AService {  

    public void barA() {
        System.out.println("...");
    }
}

5.定义切面类

@Order(1)
@Aspect
@Component
public class LoggingAspect {

    private final Logger logger = Logger.getLogger(LoggingAspect.class);

    @Before("execution(* net.shibit.service.*.*(..))")
    public void serviceBeforeMethod(JoinPoint joinPoint) {
        **
        logger.info(..);
    }
}

@Aspect 定义切面类
@Componet 将这个类加入Spring的IOC容器;
@Order(1) 指定切面的优先级,数值越小优先级越高

切入点表达式execution(* net.shibit.service.*.*(..))
  第一个*号:表示返回类型,*号表示所有的类型。
  第二个*号:表示类名
  括号里面表示方法的参数,两个句点表示任何参数。
通知类型
  @Before 前置通知,在方法执行之前执行
  @After 后置通知,在方法执行之后执行
  @AfterRunning 返回通知,在方法返回结果之后执行
  @AfterThrowing 异常通知,在方法抛出异常之后执行
  @Around 环绕通知,围绕着方法执行

实现AOP,目标(target)类就需生成动态代理。注意:
  1、目标类如果实现了某一个接口,那么Spring就会利用JDK类库生成动态代理。
  2、目标类没有实现某一个接口,那么Spring就会利用CGLIB类库直接修改二进制码来生成动态代理,需要引用CGLIB类库
参考
  http://shamrock.blog.51cto.com/2079212/1557639
  http://www.cnblogs.com/yeming/p/5444959.html
  http://zhuchengzzcc.iteye.com/blog/1504014
  http://blog.csdn.net/wangpeng047/article/details/8560694

时间: 2024-12-11 11:02:21

AspectJ的注解方式实现AOP的相关文章

Spring之AOP基本概念及通过注解方式配置AOP

为什么使用AOP 传统方法 AOP前前奏 首先考虑一个问题,假设我们要设计一个计算器,有如下两个需求: - 在程序运行期间追踪正在放生的活动 - 希望计算器只能处理正数的运算 通常我们会用如下代码进行实现: 定义一个接口: public interface ArithmeticCalculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j); } 实现类(

使用Spring的注解方式实现AOP入门

首先在Eclipse中新建一个普通的Java Project,名称为springAOP.为了使用Spring的注解方式进行面向切面编程,需要在springAOP项目中加入与AOP相关的jar包,spring aop需要额外的jar包有: com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar spring-aop-4.2.5.RELEASE.jar sprin

使用Spring的注解方式实现AOP的细节

前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Spring的注解方式实现AOP的一些细节.本文是建立在使用Spring的注解方式实现AOP入门的案例的基础之上的. 本文是来讲解使用Spring的注解方式实现AOP的一些细节,其实说白了就是学习如何使用各种通知而已,例如前置通知.后置通知.异常通知.最终通知.环绕通知等,之前我们已经学习了前置通知,现在就来学习剩余的通知. 我们先来看后置通知,此时须将MyInterceptor类的代码修改为: /** * 切面 * @

基于AspectJ的XML方式进行AOP开发

-------------------siwuxie095 基于 AspectJ 的 XML 方式进行 AOP 开发 1.首先导入 jar 包(共 10 个包) (1)导入核心 jar 包和日志相关的 jar 包 (2)导入 AOP 和 AspectJ 的 jar 包 其中: aopalliance 下载链接: http://mvnrepository.com/artifact/aopalliance/aopalliance aspectjweaver 下载链接: http://mvnrepos

使用注解方式实现 AOP和IoC

使用注解方式实现AOP和IoC IOC和DI的注解 IOC: @Component:实现Bean组件的定义 @Repository:用于标注DAO类,功能与@Component作用相当 @Service:用于标注业务类 @Controller:用于标注控制器 DI: @Resource(name="userService") 默认ByName方式,如果name确实默认按照ByType方式注入 @Autowired 默认ByType方式,如果出现同名类,则不能按照Type进行注入 需要使

Spring的注解方式实现AOP

Spring对AOP的实现提供了很好的支持.下面我们就使用Spring的注解来完成AOP做一个例子. 首先,为了使用Spring的AOP注解功能,必须导入如下几个包.aspectjrt.jar,aspectjweaver.jar,cglib-nodep.jar. 然后我们写一个接口 [java] view plain copy print? package com.bird.service; public interface PersonServer { public void save(Str

Spring笔记(五)--注解方式实现AOP

包:aspectjrt.jar.aspectjweaver.jar AOP:面向切面的编程 1.XML配置: 2.注解. 一.注解方式: 打开注解处理器: <aop:aspectj-autoproxy/> 接口: 1 package com.dwr.spring.proxy; 2 3 public interface UserManager { 4 public void addUser(String username,String password); 5 public void delet

Spring的AOP基于AspectJ的注解方式开发3

上上偏博客介绍了@Aspect,@Before 上篇博客介绍了spring的AOP开发的注解通知类型:@Before,@AfterThrowing,@After,@AfterReturning,@Around 也介绍了JoinPoint和ProceedingJoinPoint的区别 这篇博客讲@PointCut的使用,切入点注解----转载自https://www.cnblogs.com/ltfxy/p/9885742.html 这种方法便于维护管理 /** * 切面类:注解的切面类 */ @A

Spring源码窥探之:注解方式的AOP原理

AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容器中的名字是org.springframework.aop.config.internalAutoProxyCreator.2. AspectJAutoProxyRegistrar实现了ImportBeanDefinitionRegistrar接口,所以可以向容器中注册Bean的定义信息.3. 通过