使用Spring的API实现的AOP需要实现API中的一些接口重写其中的方法,看起来有点复杂需要我们好好的去推敲.

我们自定义的实现AOP变得更加简单.

自定一个Aop增强类:也就是所谓的切面

public class Diy {public void before(){System.out.println("------->在方法执行前");}public void after(){System.out.println("------->在方法执行后");}
}

逻辑业务层

public interface UserService {void add();void delete();void update();void query();}

逻辑业务层的实现类

public class UserServiceImpl implements UserService{public void add() {System.out.println("增加了一个用户");}public void delete() {System.out.println("删除了一个用户");}public void update() {System.out.println("更新了一个用户");}public void query() {System.out.println("查询了一个用户");}
}

配置Springh核心配置文件

<?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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!--注册bean对象-->
<bean id="userService" class="org.west.service.UserServiceImpl"/><bean id="diy" class="org.west.diy.Diy"/><!--编写AOP配置文件--><aop:config><!--切面-->
<aop:aspect ref="diy"><!--切入点--><aop:pointcut id="diyPointCut" expression="execution(* org.west.service.UserServiceImpl.*(..))"/><aop:before method="before" pointcut-ref="diyPointCut"/><aop:after method="after" pointcut-ref="diyPointCut"/>
</aop:aspect></aop:config></beans>

测试类

public class TestDemo {@Testpublic void test(){ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");UserService userService = (UserService) context.getBean("userService");userService.add();}}

测试结果:

------->在方法执行前
增加了一个用户
------->在方法执行后

我们可以观察到在没有改变业务逻的功能下我们可以在程序中动态的去插入一些功能.AOP采用的就是动态代理的机制去实现的.

转载于:https://www.cnblogs.com/xiaoqiqistudy/p/11298817.html

Spring-自定义类实现AOP(八)相关推荐

  1. Spring 学习笔记----->AOP

    Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...

  2. Spring→面向切面编程AOP、相关概念、通知Advice类型、配置切面切入点通知、AOP相关API、AOP代理类ProxyFactoryBean、AOP注解@AspectJ

    面向切面编程AOP CGLib AOP相关概念 Advice类型 Spring实现AOP Spring配置切面aspect 配置切入点pointcut 配置通知advice 配置通知参数 调用新的父类 ...

  3. 【Spring】AOP(二)自定义来实现AOP

    主要是切面定义. 与[Spring]AOP(一)使用Spring的API接口不同的是:这种方式使用自定义来实现AOP,而不是调用Spring的API. 下面直接上例子.(与上一个例子的区别在于,增加了 ...

  4. java实体类字段自定义,Spring Boot - 实体中的自定义类字段

    我有一个2自定义类, OzBakim 和 GunlukEtkinlik . 这些类不是实体 . 我需要在实体中使用这些类 . 但是我收到一个错误: 在类路径资源中定义名称为'entityManager ...

  5. Spring的IOC和AOP课堂笔记

    1.Spring 1.1.简介 ​ 轻量级框架,Java EE的春天,当前主流框架! 1.2.优点 Spring是一个开源的免费的框架(容器)! Spring是一个轻量级的.非入侵式的框架! 控制反转 ...

  6. 自定义注解加AOP怎么玩?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 乱敲代码 来源 | 公众号「乱敲代码」 前言 ...

  7. 通过自定义注解与aop统一存储操作记录

    模块开发完成后,接到通知需要添加操作记录功能,看着那一堆接口,如果一个方法一个方法的加,那真是太麻烦了.为了偷懒,就百度了一下,发现可以通过自定义注解和aop的形式来统一添加操作记录,只需要在每个方法 ...

  8. 一个简单的例子,学习自定义注解和AOP

    转载自   一个简单的例子,学习自定义注解和AOP 记得今年年初刚开始面试的时候,被问的最多的就是你知道Spring的两大核心嘛?那你说说什么是AOP,什么是IOC?我相信你可能也被问了很多次了. 1 ...

  9. spring 自定义日志_Spring和Hibernate的自定义审核日志

    spring 自定义日志 如果您需要对所有数据库操作进行自动审核 ,并且正在使用Hibernate-,则应使用Envers或spring data jpa auditing . 但是,如果由于某些原因 ...

最新文章

  1. CF803C Maximal GCD
  2. 论文其实也没有那么难!
  3. python如何读取excel数据-python怎么读取excel中的数值
  4. 从 idea打包工程到dos下命令运行
  5. SAP MB51物料凭证清单程序增强增加四个字段
  6. CAD格式数据转ArcGIS数据方法总结
  7. ruby mysql 占位符_ruby操作常用数据库
  8. nasa电池数据集_文章分享—模型与滤波算法结合的锂电池剩余寿命预测方法
  9. Linux (Ubuntu) 命令
  10. Java尖刀系列3:堆
  11. Linux 内核 cgroups 新漏洞可导致攻击者逃逸容器
  12. python实现音乐播放器_【原创源码】用Python来实现一个简易的MP3播放器(采用酷我接口,包含接口分析)...
  13. php 支持泛型,PHP对Java样式类的泛型有答案吗?
  14. MATLAB程序界面介绍
  15. 理解计算机故障排除的基本顺序,开关常见五种故障实例解读
  16. 取回Apple TV遥控器的D-Pad
  17. OverLoad和 OverWrite区别
  18. Redis集群搭建失败 connected_slaves:0
  19. opencv 直方图 CV::calcHist使用
  20. Aggregation-Based Graph Convolutional Hashing forUnsupervised Cross-Modal Retrieval

热门文章

  1. 软工作业:(2)硬币游戏--代码分析与改进
  2. Linux课程实践二:编译模块实现内核数据操控
  3. 我不够格,但我还是希望事情到此为止,继续工作罢
  4. ETDM:基于显式时间差分建模的视频超分辨率(CVPR 2022)
  5. ECCV 2020 | 清华提出基于循环关联的自监督行人再识别, 无标签ReID仅需两个摄像头!...
  6. EfficientDet:COCO 51.0 mAP!谷歌大脑提出目标检测新标杆
  7. 复旦提出GaitSet算法,步态识别的重大突破!
  8. 高中数学程序图转化为c语言,程序转化成逻辑图
  9. 8 个Python技巧 每天工作效率高一点 升职快人一步
  10. 等式与不等式约束的序列二次规划(SQP)