1、导入相应jar包

2、引入约束并配置XML文件

 <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"
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 "> <!-- 1 配置对象-->
<bean id="book2" class="helloworld.aop.Book"></bean>
<bean id="mybook2" class="helloworld.aop.MyBookAuto"></bean> <!-- 2 配置AOP操作-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy> </beans>

3、加上注解

MyBookAuto.class
 package helloworld.aop;

 import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before; /**
* 使用注解方式方式配置AOP操作
* */
@Aspect
public class MyBookAuto { @Before(value = "execution(* helloworld.aop.Book.*(..))")
public void beforeFn(){
System.out.println("前置操作");
} @After(value = "execution(* helloworld.aop.Book.*(..))")
public void afterFn(){
System.out.println("后置操作");
} // 环绕通知
@Around(value = "execution(* helloworld.aop.Book.*(..))")
public void aroundFn(ProceedingJoinPoint proceedingJoinPoint){
System.out.println("方法之前..."); // 被执行的增强的方法
try {
proceedingJoinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
} System.out.println("方法之后...");
} }

book.class

 package helloworld.aop;

 public class Book {

     public void add(){
System.out.println("add执行");
}
}

测试代码:

 //        使用注解方式方式配置AOP操作
ApplicationContext context2 = new ClassPathXmlApplicationContext("beans_aop2.xml");
Book book2 = (Book) context2.getBean("book2");
book2.add();

运行结果:

 方法之前...
前置操作
add执行
方法之后...
后置操作 Process finished with exit code 0

Spring之AOP注解配置的更多相关文章

  1. Spring的Aop 注解配置

    1,导包 2,准备目标对象 package com.songyan.anno; public interface UserService { void save(); void delete(); v ...

  2. spring aop注解配置

    spring aop是面向切面编程,使用了动态代理的技术,这样可以使业务逻辑的代码不掺入其他乱七八糟的代码 可以在切面上实现合法性校验.权限检验.日志记录... spring aop 用的多的有两种配 ...

  3. Spring学习之旅(八)Spring 基于AspectJ注解配置的AOP编程工作原理初探

    由小编的上篇博文可以一窥基于AspectJ注解配置的AOP编程实现. 本文一下未贴出的相关代码示例请关注小编的上篇博文<Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AO ...

  4. 【Spring】AOP注解方式实现机制

    一.概述 二.@EnableAspectJAutoProxy 注解分析 三.分析AnnotationAwareAspectJAutoProxyCreator 四.执行流程 1. registerBea ...

  5. springAop:Aop(Xml)配置,Aop注解配置,spring_Aop综合案例,Aop底层原理分析

    知识点梳理 课堂讲义 0)回顾Spring体系结构 Spring的两个核心:IoC和AOP 1)AOP简介 1.1)OOP开发思路 OOP规定程序开发以类为模型,一切围绕对象进行,OOP中完成某个任务 ...

  6. Spring MVC4 纯注解配置教程

    阅读本文需要又一定的sping基础,最起码要成功的运行过一个SpringMvc项目. 在传统的Spring项目中,我们要写一堆的XML文件.而这些XML文件格式要求又很严格,很不便于开发.而网上所谓的 ...

  7. spring mvc 基于注解 配置默认 handlermapping

    spring mvc 是类似于 Struts 的框架.他们都有一个最主要的功能就是URL路由.URL路由能将请求与响应请求处理逻辑的类(在Struts中即是action,在spring mvc 中即是 ...

  8. Spring IOC-基于注解配置的容器

    Spring中提供了基于注解来配置bean的容器,即AnnotationConfigApplicationContext 1. 开始 先看看在Spring家族中,AnnotationConfigApp ...

  9. 采用spring的schedule注解配置定时任务

    1 在springmvc配置文件中新增以下配置 <!-- 此处对于定时时间的配置会被注解中的时间配置覆盖,因此,以注解配置为准 --> <task:scheduled-tasks s ...

随机推荐

  1. multi-voltage design apr

    在先进制程中,为了降低芯片功耗,经常会采用 muti-voltage design,在一颗芯片内部划分出多个 power domain,不同 domain 采用不同的电压,有时候还会将其中某些 pow ...

  2. Python2.7-struct模块

    struct模块 处理二进制数据,与C语言交互,可以较为方便的对C语言的struct类型和python中的数据进行转换 主要是用于将int,char之类的C语言中基础数据pack至一个二进制流的字符串 ...

  3. Java 包(package)

    为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 1.包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式 ...

  4. $Simpson$积分入门

    \(\rm{0x01}\) 前言 首先阐明一点,自适应辛普森算法(\(\rm{Adaptive ~Simpson's~ rule}\) )是一类近似算法(\(\rm{Approximation ~al ...

  5. STM32 中 BIT_BAND(位段/位带)和别名区使用入门(转载)

    一. 什么是位段和别名区 是这样的,记得MCS51吗? MCS51就是有位操作,以一位(BIT)为数据对象的操作,MCS51可以简单的将P1口的第2位独立操作: P1.2=0;P1.2=1 :这样就把 ...

  6. Makefile 学习记录一

    2019年2月5日10:18:13  大年初一 整理 uboot-2018-11 源代码 根目录下的 Makefile . ifeq ("$(origin O)", "c ...

  7. odoo开发历史订单需求整体思路

    第一步:找到客户对应页面,并找到他所下过的销售订单,用数据库语句查出所有数据,并去除重复数据,显示在前端, sql="select DISTINCT t2.product_id as pro ...

  8. ajax入门简述

    ajax 全称为 “Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),是一种创建交互式网页应用的网页开发技术,本质上是一个浏览器端的技术,就是 ...

  9. 20155203 杜可欣《网络对抗技术》Exp1 PC平台逆向破解

    1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,ge ...

  10. 20155320《网络对抗》MSF基础应用

    20155320<网络对抗>MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode 于exploit,我觉得exploit是利用一些工具和方法,通过 ...