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 Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
176 4
|
1月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
224 119
|
2月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
283 0
|
26天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
2302 40
|
2月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
413 100
|
2月前
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
375 0
|
29天前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
3月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
29天前
|
XML Java 数据格式
《深入理解Spring》:AOP面向切面编程深度解析
Spring AOP通过代理模式实现面向切面编程,将日志、事务等横切关注点与业务逻辑分离。支持注解、XML和编程式配置,提供五种通知类型及丰富切点表达式,助力构建高内聚、低耦合的可维护系统。
|
29天前
|
缓存 安全 Java
《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。