spring-基于注解的aop开发(快速入门)
步骤:
 1.导入坐标
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.4</version>
    </dependency>
2.创建目标类和接口(内部有切点)
public interface TargetInterface {
    public void save();
}
@Component
public class Target implements TargetInterface{
    public void save() {
        System.out.println("save running....");
    }
}
3.创建切面类(内部有增强方法)
@Component
@Aspect   //标注当前aspect是切面类
public class MyAspect {
	//配置织入关系   value=切点表达式
    @Before(value = "execution(public void com.hao.anno.Target.save())")
    public void before(){
        System.out.println("前置增强...");
    }
    public void afterReturning(){
        System.out.println("后置增强...");
    }
    public Object around(ProceedingJoinPoint point) throws Throwable {      //切入点
        System.out.println("环绕前增强...");
        //切点方法
        Object proceed = point.proceed();
        System.out.println("环绕后增强...");
        return proceed;
    }
}
4.将目标类和切面类的对象创建权交给spring
 5.在切面类中使用注解配置织入关系
 第三步和第二步已经实现
 6.在配置文件中开启组件扫描和aop自动代理
<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--    组件扫描-->
    <context:component-scan base-package="com.hao.anno"></context:component-scan>
<!--    aop自动代理-->
    <aop:aspectj-autoproxy/>
</beans>
7.测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContextanno.xml")
public class AnnoTest {
        @Autowired
        private TargetInterface target;
        @Test
        public void test2(){
            target.save();
        }
}
结果:
 前置增强…
 save running…
spring-基于注解的aop开发(快速入门)的更多相关文章
- Spring 基于 AspectJ 的 AOP 开发
		
Spring 基于 AspectJ 的 AOP 开发 在 Spring 的 aop 代理方式中, AspectJ 才是主流. 1. AspectJ 简介 AspectJ 是一个基于 java 语言的 ...
 - Spring 基于注解零配置开发
		
本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...
 - 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
		
复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置 ...
 - Spring 基于注解的AOP实现
		
在本文开始之前,我要引入一张图,这张图的来源 https://blog.csdn.net/chenyao1994/article/details/79708496 ,版权归原作者所有,我借鉴了原作者的 ...
 - Spring基于注解配置AOP
		
D:\Java\IdeaProjects\JavaProj\SpringHelloWorld\src\aop.xml <?xml version="1.0" encoding ...
 - spring-基于xml的aop开发-快速入门
		
1.导入aop的相关坐标 <dependency> <groupId>org.springframework</groupId> <artifactId> ...
 - [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.
		
前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...
 - Spring基于AspectJ的AOP的开发——注解
		
源码:https://gitee.com/kszsa/dchart 一, AspectJ的概述: AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法所以它有一个专 ...
 - Spring_Spring与AOP_AspectJ基于注解的AOP实现
		
一.AspectJ.Spring与AOP的关系 AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Cl ...
 - SpringBoot开发快速入门
		
SpringBoot开发快速入门 目录 一.Spring Boot 入门 1.Spring Boot 简介 2.微服务 3.环境准备 1.maven设置: 2.IDEA设置 4.Spring Boot ...
 
随机推荐
- Docker——run指令中-it与-d的关系
			
建立相关的测试容器 #1.只有-d [root@iZwz908j8pbqd86doyrez5Z test]# docker run -d -p 8081:8080 tomcat:9.0 #2.只有-i ...
 - java线程池之newFixedThreadPool定长线程池
			
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待. 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根 据系统的环境情况,可以 ...
 - .htaccess文件构成的PHP后门
			
1..htaccess文件 2.文件上传绕过 一般.htaccess可以用来留后门和针对黑名单绕过 创建一个txt写入(png解析为php) AddType application/x-httpd-p ...
 - 【原创】浅谈指针(十一)alloca函数
			
前言 好几天没写了,最近网课,事情也比较多,今天多写点东西. 目录 前言 alloca函数 1.简介 2.反汇编看alloca 3.手工调用alloca函数 4.注意事项 alloca函数 1.简介 ...
 - Android BLE 蓝牙开发——扫码枪基于BLESSED
			
一.蓝牙模式HID与BLE 当扫码枪与手机连接时,通常采用的是蓝牙HID(Human Interface Device)模式.本质上是一个把扫码枪作为一个硬件键盘,按照键盘协议把扫码后的结果逐个输入到 ...
 - 学习廖雪峰的Git教程3--从远程库克隆以及分支管理
			
一.远程库克隆 这个就比较简单了, git clone git@github.com:****/Cyber-security.git 远程库的地址可以在仓库里一个clone or download的绿 ...
 - 怎么得到InnoDB主键索引B+树的高度?
			
上面我们通过推断得出B+树的高度通常是1-3,下面我们从另外一个侧面证明这个结论.在InnoDB的表空间文件中,约定page number为3的代表主键索引的根页,而在根页偏移量为64的地方存放了该B ...
 - overflow原理?
			
overflow: hidden能清除块内子元素的浮动影响. 因为该属性进行超出隐藏时需要计算盒子内所有元素的高度, 所以会隐式清除浮动 创建BFC条件(满足一个): float的值不为none: o ...
 - git-learningmeiy
			
什么是版本控制-版本迭代: 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件.目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术. ...
 - java程序如何确保多线程的运行安全?
			
线程的安全问题体现在: 原子性:一个或多个操作在CPU执行过程中不被中断的特性 可见性:一个线程对共享变量的修改,另一个线程能立刻看到 有序性:程序执行的顺序按照代码的先后顺序执行 导致线程存在安全问 ...