Java Web实战 | Spring AOP开发

简介: 下面,通过一个案例讲授如何通过Advisor的子接口进行Spring AOP开发,步骤如下所述。

640.jpg

01、创建项目,并导入相关依赖

在项目依赖清单的基础上增加Spring-AOP依赖,具体如下:

640.png

02、创建接口

在src/main/java目录下创建一个名为spring.aop.demo.common.dao的包,并创建BookDao接口,代码如文件1所示。
【文件1】BookDao.java

640.png

03、创建接口的实现类

在spring.aop.demo.common.dao.impl包下创建BookDao接口的实现类BookDaoImpl,代码如文件2所示。
【文件2】BookDaoImpl.java

640.png
fb6ae76e25e70a0089e88e3ad24fea87.png

04、配置前置通知类

编写一个实现MethodBeforeAdvice接口的类,用以实现前置通知。通知的功能是在调用BookDao的方法前进行权限检查,代码如文件3所示。

【文件3】BookDaoBeforeAdvice.java

640.png

05、创建配置文件

在src/main/resources目录下创建配置文件aop-common.xml,使用Spring的org.springframework.aop.framework.ProxyFactoryBean类创建动态代理,代码如文件4所示。

【文件4】aop-common.xml

640.png


如文件4所示,第10~11行定义目标对象bookDao,第13~14行定义通知,第16~25行借助ProxyFactoryBean生成代理对象。根据目标对象的类型(是否实现了接口)自动选择使用 JDK 动态代理或 CGLIB 动态代理机制,为目标对象(bookDao)生成对应的代理对象(bookDaoProxy)。

06、编写测试代码

在src/test/java目录下创建测试类,读取配置文件并创建BookDaoImpl的代理对象,代码如下:

640.png


调用代理对象的方法(第10~11行),可见在调用目标类的方法前的增强效果,如图3所示。

640.png


■ 图3 所有方法都被增强后的输出

目录
相关文章
|
1天前
|
Java 应用服务中间件 测试技术
深入探索Spring Boot Web应用源码及实战应用
【5月更文挑战第11天】本文将详细解析Spring Boot Web应用的源码架构,并通过一个实际案例,展示如何构建一个基于Spring Boot的Web应用。本文旨在帮助读者更好地理解Spring Boot的内部工作机制,以及如何利用这些机制优化自己的Web应用开发。
8 2
|
1天前
|
JSON 前端开发 Java
【JAVA进阶篇教学】第七篇:Spring中常用注解
【JAVA进阶篇教学】第七篇:Spring中常用注解
|
2天前
|
安全 Java 开发者
深入理解Spring Boot配置绑定及其实战应用
【4月更文挑战第10天】本文详细探讨了Spring Boot中配置绑定的核心概念,并结合实战示例,展示了如何在项目中有效地使用这些技术来管理和绑定配置属性。
10 1
|
3天前
|
Java Spring 容器
深入理解Spring Boot启动流程及其实战应用
【5月更文挑战第9天】本文详细解析了Spring Boot启动流程的概念和关键步骤,并结合实战示例,展示了如何在实际开发中运用这些知识。
13 2
|
3天前
|
前端开发 安全 Java
使用Spring框架加速Java开发
使用Spring框架加速Java开发
8 0
|
3天前
|
前端开发 JavaScript Java
Java与Web开发的结合:JSP与Servlet
Java与Web开发的结合:JSP与Servlet
8 0
|
4天前
|
JavaScript Java 开发者
Spring Boot中的@Lazy注解:概念及实战应用
【4月更文挑战第7天】在Spring Framework中,@Lazy注解是一个非常有用的特性,它允许开发者控制Spring容器的bean初始化时机。本文将详细介绍@Lazy注解的概念,并通过一个实际的例子展示如何在Spring Boot应用中使用它。
17 2
|
5天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
47 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
10天前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
|
1天前
|
编解码 数据库 计算机视觉
LabVIEW开发基于Web数字图像处理
LabVIEW开发基于Web数字图像处理