SpringAOP-2.起步

SpringAOP详解+快速入门 本文介绍了 Spring AOP 的实现原理,并通过实例解析详细阐述了其实现过程。在使用 Spring AOP时,我们需要定义切面类,并为需要实现AOP的方法添加注解。 Spring 会自动将切面逻辑插入到这些方法中,从而实现AOP的功能。 阅读详情

2.AOP的开发步骤

(1)普通业务组件(最平常的类)

(2)定义切入点(Pointcut)

(3)定义增强处理(Advise)

2.AOP的选择及几种实现方式

(1)使用AspectJ (见上篇示例)

(2)使用Spring AOP(可以使用注解的方式(推荐)和xml配置方式(了解))

以下主要讲Spring AOP的注解方式。

package springAop;
public interface UserDao {
	int addUser();
	void updataUser();
	void deleteUser();
	void findUser();
}
package springAop.imp;

import org.springframework.stereotype.Repository;

import springAop.UserDao;

//开启注解Repository,会自动扫描配置下会发布bean到容器
@Repository
public class UserDaoImp implements UserDao{

	@Override
	public  int addUser() {
		System.out.println("add user ......");
        return 6666;
	}

	@Override
	public void updataUser() {
		System.out.println("update user ......");
		
	}

	@Override
	public void deleteUser() {
		System.out.println("delete user ......");		
	}

	@Override
	public void findUser() {
		System.out.println("find user ......");		
	}

}


基于注解的切面编程。切面也是全java类。

package springAop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.AfterReturning;;
//必须要开启@Aspect注解。5中通知注解才有效
@Aspect
public class MyAspect {
	
	@Before("execution(* springAop.imp.UserDaoImp.addUser(..))")
	public void before(){
		System.out.println("前置通知...");
	}
	
	@AfterReturning(value="execution(* springAop.imp.UserDaoImp.addUser(..))",returning = "returnVal")
    public void AfterReturning(Object returnVal){
        System.out.println("后置通知...."+returnVal);
    }
}
<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-4.0.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
	
	<!-- 指定自动搜索Bean组件、自动搜索切面类 -->
	<context:component-scan base-package="springAop.imp"></context:component-scan>	
	<!-- 定义目标对象,由于开启了自动扫描。不再需要下边的bean,二选一即可 -->
    <!-- <bean id="userDaoImp" class="springAop.imp.UserDaoImp" /> -->
			
	<!-- 启动@AspectJ支持。以下两行可以启动,不启用也不我会出错。注意要aspect的三个jar包 -->
	<!-- <aop:aspectj-autoproxy/> -->
	<!-- <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator" /> -->
	

</beans>
测试:

package springAop;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import springAop.imp.UserDaoImp;

public class Test {
	public static void main(String[] args) {
		ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
		UserDaoImp u = ac.getBean("userDaoImp",UserDaoImp.class);
		u.addUser();
		
		/*UserDaoImp u =new UserDaoImp();
		u.addUser();*/
	}
}
前置通知...
add user ......
后置通知....6666


SpringAOP在项目中的简单应用 SpringAOP在项目中的简单应用   一、前言   项目背景 由于公司的机房到期,需要做应用迁移(包括数据库),割接到云平台。但是又不能进行一次性割接,需要分三个阶段:第一阶段割接2个地市,第二阶段再割接9个地市,第三阶段做全盘割接。在第一、第二阶段是要保证云平台与现网平台的应用能够正常并行运行。所以,要保证两边数据访问的正常,需要对某些功能进行改造。比如,某个子功能在并行阶段是不做... 阅读详情

相关推荐

第一章、isaacsim 及 isaaclab 安装教程

本专栏所有内容将根据上述资源地址展开,请结合食用~

m0_47719040的博客 4777

SpringAOP学习--SpringAOP简介及原理

前文对AOP做了介绍,实际项目中,一般不会直接上手手动实现aop,而是使用一些高级封装的aop实现,如SpringAOP。 Spring是一个广泛应用的框架,SpringAOP则是Spring提供的一个标准易用的aop框架,依托Spring的IOC容器,提供了极强的AOP扩展增强能力,对项目开发提供了极大地便利。 前文提到AOP的实现有AspectJ、JDK动态代理、CGLIB动态代理,SpringAOP不是一种新的AOP实现,其底层采用的是JDK/CGLIB动态代理。 JDK动态代理回顾 上一篇简单介绍了

u012098021的博客 6万+

MOOS-ivp 实验三 MOOS简介(1)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

weixin_44151170的博客 7434

SpringAOP是啥,怎么用?

SpringAOP是啥,怎么用? 一、面试问题:什么是SpringAOP? SpringAOP的全称是(Aspect Oriented Programming)中文翻译过来是面向切面编程,个人理解:主要意思是我们的传统架构至上而下,后期想要从中间切入写代码添加功能,比如日志、权限、事务等,这时候我们就需要写使用代理模式写,而springaop就是专门把这一块写代码的地方给抽象了出来称为切面,从而解决的代码混乱的问题,它的底层实现也是基于代理模式(动态代理)完成的。 二、SpringAOP的应用场景有

Object_de_Father的博客 19万+

SuperPoint+SuperGlue在HLoc中的实战效果对比:5大公开数据集测试报告

本文在HLoc框架下,对传统SIFT与深度学习组合SuperPoint+SuperGlue在五大公开数据集上的视觉定位效果进行了实战对比测试。报告详细分析了两种方案在Aachen Day-Night、RobotCar Seasons等不同光照、季节及场景下的表现,揭示了SuperPoint+SuperGlue在应对剧烈光照变化和长期外观变化时的显著优势,并提供了基于HLoc模块化设计的选型与配置策略。

weixin_29093169的博客 425

MODBUS通讯不求人:手把手教你用三菱FX2N控制士林变频器

本文详细介绍了如何使用三菱FX2N PLC通过MODBUS协议控制士林变频器,涵盖硬件连接、参数配置、程序设计及通讯优化等关键步骤。特别针对没有内置MODBUS函数块的老款PLC,提供了CRC校验和稳定数据交换的实用解决方案,帮助工程师快速实现工业自动化设备的高效通讯。

v4w5x6的博客 226

SpringAOP面向切面编程

介绍面向切面编程的思想(AOP),AOP的组成,SpringAOP的简单演示使用,SpringAOP基于动态代理的实现原理。

trong_ 的烂笔头 2544

VASP+Multiwfn+VMD静电势计算与可视化全流程解析

静电势是表征分子与材料表面电荷分布的关键物理量,它通过求解泊松方程,将电子密度与原子核电荷在空间中的贡献结合起来,直观揭示体系的电子富集与缺失区域。这一性质在理解化学反应活性、分子间相互作用(如氢键、卤键)以及材料表面性质方面具有重要价值。在计算材料科学与量子化学领域,基于第一性原理计算获得高精度电子结构数据后,如何将其转化为可直观分析的静电势图,是连接理论计算与物理解释的关键技术环节。本文聚焦于构建一条高效、可控的端到端工作流,详细解析如何利用VASP进行高精度电子密度计算,通过专业波函数分析软件Mult

weixin_33733810的博客 427

SpringAop(2)

在新建java类中选择Annotation,并创建对象。@Target后边的是作用域的范围,说明了后边是作用在方法上的。@Retention是作用的生命周期,(RUNTIME)是运行时。但是这时候的注解并没有任何逻辑我们给他填上逻辑。@Component@Slf4j@Aspect//切点作用域在这里我们定义了一个切面类,通过@Around("@annotation(com.syx.aop.config.MyAspect)")来声明该切面类的作用范围。

syx050403的博客 911

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

qq_45806640的博客 454

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

WW、forever的博客 2155

SSM-Spring篇2——SpringAOP

本文中主要学习如何使用SpringAOP来实现面向切面编程,是Spring的一个核心功能

2202_75483664的博客 1045

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

springAOP

AOP是Aspect Oriented Programming(面向切面编程),切面是指某一特定问题,所以AOP也可以理解为面向特定方法编程。比如我们在用户登录时设置登录校验拦截器,就是对“登录校验”这一类问题的统一处理,所以拦截器是AOP的一种应用,而AOP是一种思想,拦截器就是AOP思想的一种实现。而Spring框架也实现了这种思想,提供了拦截器技术的相关接口。同样的,统一数据返回格式和统一异常处理,也是AOP思想的一种实现。

2202_75439262的博客 954

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SpringAOP超详细教学

SpringAOP 前言 我的这篇AOP博客有大量的图片和例子教会怎么使用AOP 配置那里如果没有学习Maven的话也别急 就是使用maven下载了jar包而已了 你完全可以自己手动导入 如果你有一些代码比如说 事务 或者 日志等操作 需要大量嵌入你的代码前后的话 那么无疑AOP是最好用的 AOP运行流程 : 首先调用前置通知(你可以认为最一开始初始的东西)-&amp;gt;你的逻辑代码(这里先不说环...

TheSevenSky 8514

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SpringAOP

简要介绍SpringAop的概念及其注解用法

山中一扶苏的博客 1032

关于SpringAOP的详细介绍

关于springAOP的记录

IDEA_guo的博客 989

SpringAOP 实例

一、介绍这些天看了《Spring in Action》的第四章,讲解的是关于SpringAOP方面的,现在将自己的例子写出来。二、AOP相关知识介绍AOP可以做一些与业务逻辑不相关的操作,比如:日志、事务、安全等,使我们更加去关注自己的业务。切面(Aspect) :要织入到业务上的一个类。切面是由切点和通知组成的切点(pointcut):要执行的业务方法执行通知的一个标识。通知(advice):切...

clumsyCoding的博客 409

SpringAOP和AspectJ有什么关系 ?

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉✨特色专栏:🥭本文内容:SpringAOP和AspectJ有什么关系?📚个人知识库:,欢迎大家访问我们知道现在开发都是Spring,讲的最多的也是SpringAOP,在说springAOP前,先了解下AOP是什么?AOP是通过 “预编译方式” 和 “运行期间动态代理” 实现程序功能的统一维护的一种技术。

分享思想,留下痕迹。 1734

【springBoot】springAOP

如果其他类需要使用,需要把切点声明为public.使用时,类的全限定名称+切点名称 ==> 包+类名@Slf4j@Aspect@Component@After("com.example.aopdemo.aspect.AspectDemo.pt()")//前置通知log.info("执行AspectDemo1 doAfter……");

weixin_66409969的博客 1047

SpringAop(1)

一种规则Pointcut 的作⽤就是提供⼀组规则 (使⽤ AspectJ pointcut expression language 来描述), 告诉程序对哪些⽅法来进⾏功能增强。也就是@Around后边的字符串,描述了在哪里进行切入。对哪些的方法进行功能增强。(告诉哪些能被连接成切面,哪些不能被连接成切面,哪些能被Aop认识到,就是寻找匹配项)。这是切面的设置以及切面的逻辑@Slf4j@Component@Aspect//作用的范围是TestController。

syx050403的博客 1190

基于注解的SpringAOP Redis缓存技术

这篇博文主要介绍如何使用SpringAOP + Redis +注解的方式实现缓存的开发。 一、术语说明 1、SpringAOP AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IOC基础,是对OOP的有益补充。SpringAOP的可配置式,使得代码几乎没有耦合侵入。 2、Redis Redis是一个开源的使用ANSI C语言编写、

chentian610的博客 5007

面试遇到SpringAOP不要慌

Aspect Oriented Programming(面向切面编程)是一种编程思想。所谓切面可以理解为特定的一些方法。所以AOP可以看成是面向特定的方法进行编程。比如上一篇文章提到的拦截器,就是AOP的体现。它针对特定的方法进行统一的管理,让代码模块化,易于维护。包括ExceptionAdvice、ResponseBodyAdvice(统一异常处理、统一数据返回格式)都运用了AOP的思想。定义一个注解:@Retention(RetentionPolicy.RUNTIME)//表示运行时,仍然存在。

HYY的博客 1211
上一篇: SpringAop-1.AspectJ起步
下一篇: Mysql(1)基础
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值