spring学习 十三 注解AOP

  spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解,也就是要开启注解扫描,注解的包是spring-context.jar,所以在配置文件中还要引入context约束,也就是引入 xmlns:context命名空间

第一步开始注解,base-package的属性值指定哪些包下可能有注解,多个包用逗号隔开,也可以采用通配符进行配置

<!-- 开启注解 -->
    <context:component-scan base-package="com.airplan.pojo,com.airplan.bean"></context:component-scan>

    <!--
        AOP的注解方式都是采用cglib动态代理
         proxy-target-class="true"代表采用cglib动态代理
         false代表使用jdk的动态代理
     -->
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

第二步:对要注册到spring器的类打上注解,例如@Service,@Component等

@Component  相当于<bean/>,如果没有参数,把类名首字母变小写,相当于<bean id=””/>,也可以@Component(“自定义名称”)

我们对通知类,以及切点所在的类要打上注解
切点类:在方法上添加@Pointcut(“”) 定义切点

package com.airplan.pojo;

import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component("pointCutClass")
public class PointCutClass {
    /**
     * 声明切点
     * @param name01
     */
    @Pointcut("execution(* com.airplan.pojo.PointCutClass.*(..))")
    public void pointCutFun() {

        System.out.println("切点执行");
    }
}

通知类:@Aspect 相当于<aop:aspect/>表示通知方法在当前类中,

@Before("com.bjsxt.test.Demo.demo1()")注解代表当前方法是前置通知,@Before注解中的值时切点的全路径

package com.airplan.pojo;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Component("advice")
@Aspect
public class Advice {

        @Before("com.airplan.pojo.PointCutClass.pointCutFun()")
        public void mybefore(String name){
            System.out.println("前置"+name );
            System.out.println("before");
        }

}

原文地址:https://www.cnblogs.com/cplinux/p/9742096.html

时间: 2024-10-09 08:11:46

spring学习 十三 注解AOP的相关文章

Spring学习篇:AOP知识整理

AOP知识整理 AOP(Aspect-Oriented Programming):面向切面的编程.OOP(Object-Oriented Programming)面向对象的编程.对于OOP我们已经再熟悉不过了,对于AOP,可能我们会觉得是一种新特性,其实AOP是对OOP的一种补充,OOP面向的是纵向编程,继承.封装.多态是其三大特性,而AOP是面向横向的编程. 面向切面编程(AOP)通过提供另外一种思考程序结构的途经来弥补面向对象编程(OOP)的不足.在OOP中模块化的关键单元是类(classe

Spring学习六、AOP与整合Mybatis

十一.AOP AOP(Aspect Oriented Programming) 意为:面向切面编程 是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP是OOP的一种延续,是软件开发的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型. 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率. AOP的作用及优势 作用 程序运行期间,不修改源码对已有方法进行增强 优势 减少重复代码

Spring学习十三----------Spring AOP的基本概念

? 版权声明:本文为博主原创文章,转载请注明出处 什么是AOP -面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 -主要的功能是:日志记录.性能统计.安全控制.事务处理.异常处理等 AOP实现方式 -预编译 -AspectJ -运行期动态代理(JDK动态代理.CGLib动态代理) -Spring AOP.Jboss AOP AOP相关概念 -切面(Aspect)   一个关注点的模块化,这个关注点可能会横切多个对象 -连接点(Joinpoint)   程序执行过程中

spring 学习之二 AOP编程

AOP概念 AOP, aspect oriented programing,翻译过来就是面向切面编程的意思,那什么叫面向切面编程呢?相对于之前传统的纵向继承方式来对原有功能进行功能扩展, 面向切面编程的好处就是不需要增加源代码就可以进行功能扩展. AOP术语 --joinpint(连接点): 指那些被拦截到的点,在spring中,这些点指的是方法 --pointcut(切入点) : 指要对哪些连接点进行拦截定义,即对哪些方法做扩展处理 --advice(通知/增强) : 通知是指拦截到joinp

Java 系列之spring学习--springmvc注解方式(五)

一.springmvc注解方式 注解方式使用的更多,更加灵活.在上一篇的博客的基础上修改springmvc-servlet.xml配置文件. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchem

Java 系列之spring学习--springmvc注解参数传递(六)

一.绑定参数注解如下 @RequestParam     绑定单个请求数据,既可以是URL中的参数,也可以是表单提交的参数或上传的文件. 它有三个属性:  value    用于设置参数名. defaultValue    用于对参数设置默认值.         required    用于设置是否必需值,默认为true.为true时,如果参数为空,会报错. @PathVariable    绑定URL中的参数值 它只有一个属性值value 访问地址:http://localhost:8080/

spring学习十三

1: RESTful URL : 域和端口 / servlet / 资源 / 参数id 2:  静态资源访问处理? 采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为/,这样会将css,js等静态资源进行拦截,发送404错误. 解决方法: --配置<mvc:resources/> <mvc:resources mapping="请求URI" location="资源位置" /> --配置<mvc:default-se

spring学习5:基于注解实现spring的aop

目录 spring学习5:基于注解实现spring的aop 一.基于注解+xml实现 1.1 在配置文件中开启spring对注解aop的支持 1.2 把通知类用注解配置到容器中,并用注解声明为切面 1.3 定义切入点表达式 1.4 定义通知 二.基于纯注解实现 三.多个aop的执行顺序 1.xml配置 2.注解配置 3.注意 spring学习5:基于注解实现spring的aop 上一节学习了spring aop的基本概念和如何基于xml配置来实现aop功能.这一节来学习下如何用注解实现aop 一

Spring学习一:IOC(控制反转)和AOP(面向切面)的xml配置和注解方式

Spring框架的作用:为了简化java开发 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的 一.IOC(控制反转) 1 构造器注入 (xml配置) 2方法注入 (注解方式) (xml配置) 二,AOP(面向切面) 注解方式 xml配置 只是使用,那简单,