spring AOP annotation方式(静态配置)

Spring aop 之 静态代理 动态代理 Aspectj aop-config 等实现方式 主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB aop-config 7. AOP动态代理配置 8. AOP自动识别动态代理配置 立即下载

 首先加入spring_AOP必备的4个jar包:
 spring.jar
 aspectjrt.jar
 aspectweave.jar
 Commons-logging.jar
1.Aspect类:
package annotationSecurityHandler;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/**
 * 定义Aspect
 * @author Administrator
 *
 */
@Aspect
public class SecurityHandler {
 
 /**
  * 定义Pointcut,pointcut的名称是allAddMethod,该方法只是一个标示,没有方法体.
  * pointcut的内容是一个表达式,表述哪些对象的哪些方法(订阅joinpoint)
  */
 @Pointcut("execution(* add*(..))")
 private void allAddMethod(){}
 
 /**
  * 定义advice,标示在哪个切入点,何处织入此方法before/after
  */
 @Before("allAddMethod()")
 private void checkSecurity(){
   System.out.println("========checkSecurity============");
 }
}
2.接口
package manager;

public interface UserManager {

  public void addUser(String userName,String password);
  
  public void deleteUserById(int id);
  
  public String findUserById(int id);
  
  public void modifyUser(int id,String userName,String password);
}
3.实现类:
package managerImpl;

import manager.UserManager;

public class UserManagerImpl implements UserManager {

 public void addUser(String userName, String password) {
  System.out.println("===UserManagerImpl==addUser==");
 }

 public void deleteUserById(int id) {
  System.out.println("===UserManagerImpl==deleteUserById==");
 }

 public String findUserById(int id) {
  System.out.println("===UserManagerImpl==findUserById==");
  return null;
 }

 public void modifyUser(int id, String userName, String password) {
  System.out.println("===UserManagerImpl==modifyUser==");
 }

}
4.测试:
package test;

import manager.UserManager;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  BeanFactory beanFactory = new ClassPathXmlApplicationContext("applicationContext.xml");
  UserManager userManager = (UserManager) beanFactory.getBean("userManager");
  userManager.addUser("", "");
  userManager.deleteUserById(1);
 }

}
6.applicationContext.xml中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:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
 <aop:aspectj-autoproxy/>
 
 <bean id="securityHandler"
  class="annotationSecurityHandler.SecurityHandler" >
  </bean>
 <bean id="userManager"
  class="managerImpl.UserManagerImpl" >
 </bean>
 </beans>

 

13.5元低成本模拟乘法器AD633JN实测:手把手教你避开那些坑 本文以13.5元低成本模拟乘法器AD633JN为核心,通过实测搭建混沌电路的全过程,手把手教你避开电源灌流、芯片发烫、输入偏置等常见陷阱。文章详细剖析了AD633JN的比例因子、输入阻抗等关键特性,并提供了正确的电源去耦、信号耦合及稳定性布线方案,旨在帮助硬件爱好者与工程师高效利用这款高性价比芯片,节省调试时间与成本。 阅读详情

相关推荐

【实用工具】QQ自动发消息

程序下载:蓝奏云 源代码: #include<Windows.h> #include<bits/stdc++.h> #include<conio.h> using namespace std; void HideWindow() { HWND hwnd; hwnd=FindWindow("ConsoleWindowClass",NULL); if(hwnd) ShowWindow(hwnd,SW_HIDE); return; } int main() { pri

liuzich的博客 2643

AspectJ 切面注解中五种通知注解:@Before、@After、@AfterReturning、@AfterThrowing、@Around

要在 Spring 中声明 AspectJ 切面, 只需要在 IOC 容器中将切面声明为 Bean 实例. 当在 Spring IOC 容器中初始化 AspectJ 切面之后, Spring IOC 容器就会为那些与 AspectJ 切面相匹配的 Bean 创建代理。 在切面类中需要定义切面方法用于响应响应的目标方法,切面方法即为通知方法,通知方法需要用注解标识,AspectJ 支持 5 种类型的

u010502101的博客 17万+

CANoe.Diva实战:基于CDD的UDS诊断自动化测试全流程解析

本文详细解析了使用CANoe.Diva进行基于CDD的UDS诊断自动化测试的全流程,包括环境搭建、CDD文件配置、测试范围设置、用例生成与验证、CANoe集成测试及报告分析。通过实战经验分享,帮助工程师快速掌握诊断自动化测试技巧,提升测试效率与质量。

weixin_29258297的博客 218

Spring 基于Aspectj的注解开发AOP(一)-前置通知@Before

一、Aspectj 常用注解 1、@Before 前置通知,相当于BeforeAdvice ps:在目标方法之前执行 应用场景:如在保存之前进行权限校验,只有管理员身份才有权限保存; 2、@AfterReturning 后置通知,相当于AfterReturningAdvice ps:在目标方法之后执行 应用场景:如在删除...

路西法Lucifer 5032

ROS探索篇(一)在Gazebo中实现移动机器人仿真与环境搭建

$x+y=z$

weixin_52029211的博客 4619

激光焦点动态跟踪技术实战大揭秘:电容式与同轴视觉的巅峰对决

激光焦点动态跟踪技术是保证激光加工质量的关键因素。本文对比评测了电容式和同轴视觉两种主流技术:电容式响应速度快、成本低,适合高速稳定加工环境,但易受电磁干扰;同轴视觉精度高、抗干扰强,适合精密加工和复杂工件,但成本较高且处理速度受限。评测结果表明,企业应根据加工需求、预算和环境选择合适技术。未来该技术将向智能化、多技术融合方向发展,为工业应用提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 124

开始使用AspectJ-实现步骤@Aspect,@Before,还有其中的JoinPoint参数

开始使用AspectJ 1.maven依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </depen...

weixin_48370579的博客 2495

[关系图谱] 二.Gephi导入共线矩阵构建作者关系图谱

本文主要讲解Gephi绘制作者间的关系图谱,该软件可以广泛应用于社交网络、知识图谱分析,推荐读者使用。这是非常基础的一篇文章,重点讲解Gephi使用方法,希望对大家有所帮助。

杨秀璋的专栏 1万+

Spring系列之@Aspect中5中通知详解

@Aspect中有5种通知 @Before:前置通知, 在方法执行之前执行 @Aroud:环绕通知, 围绕着方法执行 @After:后置通知, 在方法执行之后执行 @AfterReturning:返回通知, 在方法返回结果之后执行 @AfterThrowing:异常通知, 在方法抛出异常之后 这几种通知用起来都比较简单,都是通过注解的方式,将这些注解标注在@Aspect类的方法上,这些方法就会对目标方法进行拦截,下面我们一个个来看一下。 @Before:前

azhou的代码园 1815

RedCap:一种通信技术的概述

总结起来,RedCap是一种基于数据包交换的通信技术,它提供了一种高效、可靠的数据传输机制。通过使用RedCap,我们可以轻松地发送和接收数据包,并确保数据的完整性和正确性。在上面的示例中,我们首先导入了RedCap库,并创建了一个RedCap实例。然后,我们定义了目标地址和源地址,并创建了一个数据包,其中包含了目标地址、源地址和要发送的数据。本文将介绍RedCap的基本原理和使用方法,并提供一些相关的源代码示例。RedCap还提供了其他一些功能,如数据包的重传机制、流量控制和拥塞控制等。

YgjWeb的博客 899

AUTOSAR TcpIp模块 以太网配置开发2

someip协议之tcpIp协议

汽车电子电气 1085

【spring框架】AOP的Annotation实现(下)

了解下面的就了解了Spring的声明式异常管理的原理 1.织入点的语法: 下面给出一些通用切入点表达式的例子。 任意公共方法的执行: execution(public * *(..)) 任何一个名字以“set”开始的方法的执行: execution(* set*(..)) AccountService接口定义的任意方法的执行: execution(* ...

weixin_33963594的博客 206

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1789

spring AOP实现(Annotation方式/静态文件配置方式)

总结:spring对AOP的支持(1)Aspect默认情况下不用实现接口,但对于目标对象(UserManagerImpl.java),在默认情况下必须实现接口,如果没有实现接口必须引入CGLIB库我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得参数值、方法名等等spring对AOP的支持(2)1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象

hmk2011的专栏 3907

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

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

AOP原理

AOP基础 : http://wayfarer.cnblogs.com/articles/241024.html 实现AOP的技术,主要分为两大类: 一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行; 二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。 然而殊途同归,实现AOP的技术特性却是相...

iteye_16421的博客 141

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

spring AOP详解

1、AOP:AOP(Aspect Orient Programming),也就是面向切面编程。可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程。 2.Spring 中 AOP 的实现   Spring 有如下两种选择来定义切入点和增强处理。 基于 Annotation 的“零配置”方式:使用@Aspect、@Poi...

adlm15681的博客 128

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring快速搭建,Bean生命周期和三种装配方式

Bean的生命周期和Spring 快速搭建

weixin_45956631的博客 605

Java回顾之Spring基础

这一篇主要讲Spring一些基础的内容。   概述 Spring 是一个非常火的框架,尤其是在Web开发领域,和Struts以及Hibernate构成了SSH三剑客。当时Web开发的另一个组合是LAMP,即 Linux+Apache+MySQL+PHP。我在前端方面基本没有实战经验,对js等技术也还是停留在概念和语法方面,所以扬长避短,我对 Spring以及Hibern...

weixin_30394333的博客 76

spring-aop笔记

有接口aopJDk放入容器的是接口的一个代理类对象,而不是本身实现类,不可以根据实现类获取代理组件没有接口aop( cglib)根据目标类生成了一个子类(代理类)放入到容器,可以使用实现类获取代理组件。

2401_88481074的博客 2352

Spring3.0 AOP 详解

一、什么是 AOP。 AOP(Aspect Orient Programming),也就是面向切面编程。可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程。 二、AOP 的作用。 常常通过 AOP 来处理一些具有横切性质的系统性服务,如事物管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常常用的解决方案。

Leon的专栏 9万+

Spring AOP 事务

容器、AOP和事务

2404_88294688的博客 1592

spring Core之AOP

本篇文章主要讲的是spring框架的AOP机制,以及面向切面编程的AOP最初实现的AspectJ框架,以及spring中的AOP与AspectJ框架的AOP的区别和优劣。

Bennett的博客 439

spring aop jar包里面的方法_Spring的AOP

一、实现自己的AOP我们知道AOP的底层其实就是基于动态代理机制实现的,所以这里先自己实现一下AOP就如上篇随笔所说,动态代理类必须要实现InvocationHandler的这个接口,我们的这个类当然也要实现这个接口了。然后在里面定义了一个私有的Object属性,表示我们要代理的对象。这里我们将这个类的构造方法禁用掉,使其不能通过外部直接new出来一个对象,然后我们写一个newInstance的方...

weixin_39557402的博客 978

spring aop详解

一、什么是 AOP。 AOP(Aspect Orient Programming),也就是面向切面编程。可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程。 二、AOP 的作用。 常常通过 AOP 来处理一些具有横切性质的系统性服务,如事物管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常

Junit的博客 270

Spring AOP 之 Schema配置切面

这篇文章是基于Spring AOP 之 Aspect文章的一个延伸,如果不熟悉如何使用AspectJ annotation去配置切面的话 建议先去看《Spring AOP 之 Aspect》 下面我们就使用一个比较简单的例子介绍如何使用spring配置文件去配置切面: 定义Aspect类,但是我们不标记任何AspectJ的annotation: public class Aspec

搞事情的博客 479

spring 中的aop面向切面编程

《Spring参考手册》中定义了以下几个AOP的重要概念,结合以上代码分析如下: 一、什么是 AOP。 AOP(Aspect Orient Programming),也就是面向切面编程。可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程。 二、AOP 的作用。 常常通过 AOP 来处理一些具有

u013407373的专栏 723
上一篇: jdk动态代理,spring核心动态代理
下一篇: spring Aop 配置文件方式+JoinPoint获取参数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值