spring的第四天aop之注解版

于风‘sblog      2022-04-17     281

关键词:

Spring的第四天AOP之注解版

在上一篇博客中,介绍了Spring的AOP的xml版本的使用,在这篇博客中,我将介绍一下,注解版的使用。

常用注解

注解通知
@After 通知方法会在目标方法返回或抛出异常后调用
@AfterRetruening 通常方法会在目标方法返回后调用
@AfterThrowing 通知方法会在目标方法抛出异常后调用
@Around 通知方法将目标方法封装起来
@Before 通知方法会在目标方法执行之前执行

xml文件配置

<!-- 声明激活自动扫描组件功能,spring会去自动扫描com.weno下面或则自包下面的java文件,如果扫描到了@Component,@Controller等这些注解的类,就会把他们注册为bean,名字为类名但是首字母小写 -->
<context:component-scan base-package="com.weno.*"/>

<!-- Spring默认不支持使用@AspectJ的切面声明
    使用如下配置可以使Spring发现那些配置@AspectJ的bean,并且创建代理,织入切面 -->
<aop:aspectj-autoproxy/>

通知类

//声明这是一个组件,使其能够被扫描到
@Component
//声明这是一个切面Bean
@Aspect
public class Advices {

    //减少重复性工作
    @Pointcut(value = "execution(* com.weno.pojo.User.msg())")
    public void msg(){
    }

    @Before(value = "msg()")
    public void beforeMethod(){
        System.out.println("我正在切前置");
    }


    @AfterReturning(returning = "rvt",value = "msg()")
    public void returnMethod(String rvt){
        System.out.println("我正在切返回值"+rvt);
    }

    @After( value = "msg()")
    public void afterMethod(){
        System.out.println("我正在切后置");
    }

    @AfterThrowing(value = "execution(* com.weno.pojo.User.msg2())")
    public void errorMethod(){
        System.out.println("我正在切错误");
    }

}

被切的类

import org.springframework.stereotype.Component;

@Component
public class User {

    public String msg(){
        System.out.println("我叫msg");

        return "你是谁?";
    }
    public void msg2(){
        System.out.println("被错误通知切");
        throw new RuntimeException("我故意的错");
    }
}

啊啊啊啊!恭喜IG

 


 

 

 


 

 

 


 

 

spring源码窥探之:注解方式的aop原理

AOP入口代码分析通过注解的方式来实现AOP1.@EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容器中的名字是org.springframework.aop.config.internalAutoProxyCreator。2.AspectJAutoProxyRegistrar实现了ImportBean 查看详情

spring之aop【二】

参考技术Atitle:Spring之AOP【二】date:2017-03-2502:42:16tags:execution日常使用最多的标识符,使用execution标识符的Pointcut表达式格式:within指定类型,类型下所有方法。可以使用*和..扩展,like:within(tk.zhangh.spring..*)this和targetSpring中使用thi... 查看详情

一起学spring之注解和schema方式实现aop

...ava语言,定义了AOP语法,能够在编译时实现代码的注入。Spring通过集成ApsectJ实现了以注解方式定义通知类,大大减少了配置文件的工作量。本文主要讲解通过注解方式和Schema方式实现AOP编程,仅供学习分享使用,如有不足之 查看详情

spring注解驱动开发之aop容器篇(代码片段)

  前言:现今SpringBoot、SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解、原理,比如@Conditional、@Import、@EnableXXX等。如果掌握这些底层原理、注解,那么我们对这些高层框架就能做到高度... 查看详情

java之springaop入门到精通idea版(一篇文章精通系列)(代码片段)

Java之SpringAOP入门到精通【IDEA版】(一篇文章精通系列)一、设计模式-代理模式二、AOP思想及实现原理1、AOP思想2、实现原理(1)基于接口的动态代理:3、Spring中AOP的术语三、Spring注解驱动AOP开发入门1、写在... 查看详情

spring-aop的简单实例注解版

项目结构如图,基本的spring的配置就不在赘述1.首先编写自定义的切面类packageorg.wu.test;importorg.aspectj.lang.annotation.AfterReturning;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Before;importorg.asp 查看详情

二java框架之spring注解开发(代码片段)

...ig类)引用类型的注入总结1.6XML配置和注解配置对比2.Spring整合MyBatis2.1mybatis写法回顾2.2整合:导入依赖:pom.xml2.3整合:环境准备2.4整合:Spring核心配置文件SpringConfig.javaJdbcConfig.javaMybatisConfig.java2.5运行和说明3.... 查看详情

javaee框架整合技术之spring02-aop面向切面编程技术(代码片段)

Spring新注解Spring5.0之后的注解称为新注解使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置注解说明@Configuration表示当前类是一个配置类,用于代替配置文件,相当于applicationContext.xml@Bean作用于... 查看详情

javaee框架整合技术之spring02-aop面向切面编程技术(代码片段)

Spring新注解Spring5.0之后的注解称为新注解使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置注解说明@Configuration表示当前类是一个配置类,用于代替配置文件,相当于applicationContext.xml@Bean作用于... 查看详情

spring源码分析之spring注解@aspect是如何工作的?

1、@Aspect  在xml定义:<aop:aspectj-autoproxy/>,其定义在http://www.springframework.org/schema/aop/spring-aop-3.0.xsd-<xsd:elementname="aspectj-autoproxy">-<xsd:annotation>-<xsd:d 查看详情

spring系列之aop分析之获取advisor的过程续

...了切面类中所有不带@Pointcut注解的方法,我们看看Spring对我们获取到的这些方法进行了什么操作:for(Methodmethod:getAdvisorMethods(aspectClass))//循环切面中所有不带@Pointcut注解的方法。//method切面中不带@Poin 查看详情

spring框架的ioc之注解方式的快速入门

...所有需要的jar包*引入IOC容器必须的6个jar包*多引入一个:Spring框架的AOP的jar包,spring-aop的jar包2.步骤二:创建对应的包结构,编写Java的类*UserService--接口*UserServiceImpl--具体的实现类3.步骤三:在src的目录下,创建applicationContext.xml... 查看详情

spring-aop@aspectj切点函数之@annotation()(代码片段)

...中。实例代码已托管到Github—>https://github.com/yangshangwei/SpringMaster首先我们先自定义一个注解@NeedTest。如何自定义注解请参考Java-Java5.0注解解读packagecom.xgj.aop.spring.advisor.aspectJ.function;importjava.lang.annotation.Documented;importjava.lang.an... 查看详情

从头认识spring-3.8简单的aop日志实现(注解版)-扩展增加检查订单功能,以便记录并检测输入的参数

这一章节我们讨论一下扩展增加检查订单功能,以便记录并检测输入的参数。1.domain蛋糕类:packagecom.raylee.my_new_spring.my_new_spring.ch03.topic_1_8;publicclassCake{ privateStringname=""; publicStringgetName(){ returnname; } publi 查看详情

spring系列之手写一个springmvc(代码片段)

目录Spring系列之IOC的原理及手动实现Spring系列之DI的原理及手动实现Spring系列之AOP的原理及手动实现Spring系列之手写注解与配置文件的解析引言在前面的几个章节中我们已经简单的完成了一个简易版的spring,已经包括容器,依赖... 查看详情

spring框架知识复习之二

Spring使用注解对Bean进行管理1使用注解需配置aop相关xsd文件的约束和命名空间xsd文件名为:spring-aop-4.2.xsd2注解组件扫描配置示例如下:base-package属性设置扫描指定包下的所有子孙包<context:component-scanbase-package="cn.itma.bean"></c... 查看详情

spring源码学习之aop源码分析

...,所以这个注解就是Aop的入口了。这个注解的作用就是在Spring的后置处理器中添加一个处理器来处理springBean,使之成为一个代理对象。1@Target({ElementType.TYPE})2@Retention(RetentionPolicy.RUNTIME)3@Documented4@Import({Aspec 查看详情

从头认识spring-3.8简单的aop日志实现(注解版)-扩展添加检查订单功能,以便记录并检測输入的參数

这一章节我们讨论一下扩展添加检查订单功能,以便记录并检測输入的參数。1.domain蛋糕类:packagecom.raylee.my_new_spring.my_new_spring.ch03.topic_1_8;publicclassCake{ privateStringname=""; publicStringgetName(){ returnname; } publi 查看详情