springBoot(九)--集成AOP

本文介绍了如何在Spring和Spring Boot环境中配置和使用面向切面编程(AOP),包括配置文件和注解方式的开启方法,以及如何通过创建Aspect、Advisor等组件实现业务逻辑的解耦。

Spring中使用AOP

配置文件开启AOP

引入Aspect

在这里插入图片描述

创建用于拦截的bean

在这里插入图片描述

创建Advisor

在这里插入图片描述

创建配置文件

要在Spring中开启AOP功能,还需要在配置文件中做如下的声明来开启AOP:
在这里插入图片描述

注解开启AOP

使用@EnableAspectJAutoProxy配置在任何一个@Configratrion或者@Component上。
在这里插入图片描述

SpringBoot集成AOP

添加pom依赖

在这里插入图片描述
在这里插入图片描述
接着就可以创建Advisor了,AOP的自动配置类帮我们开启了AOP,所以不需要通过@EnableAspectJAutoProxy开启AOP了

AopAutoConfiguration

一旦导入了spring-boot-starter-aop依赖后,SpringBoot就会启动AOP的自动配置类AopAutoConfiguration:
在这里插入图片描述
该类的具体实现:
在这里插入图片描述
总结:

@EnableAspectJAutoProxy这个注解是整个AOP的核心,其作用和<aop:aspectj-autoproxy/>是一样的。
感谢并参考:
https://www.cnblogs.com/java-chen-hao/p/11850862.html

### Spring Boot与MyBatis-Plus多表联查实现方法 #### 一、环境准备 为了能够顺利地完成Spring Boot与MyBatis-Plus的集成并进行多表联查的操作,需先准备好开发环境。这包括但不限于安装MySQL数据库以及用于管理该数据库的工具Navicat[^2]。 #### 二、项目搭建 创建一个新的Spring Boot工程,在`pom.xml`文件中加入必要的依赖项来引入MyBatis-Plus的支持: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版号</version> </dependency> <!-- 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> ``` 配置数据源信息于application.properties或yml文件内,指定JDBC URL、用户名及密码等参数以便连接到目标数据库。 #### 三、实体类定义 针对不同类型的关联关系(一对一、一对多、多对多),分别设计相应的JavaBean对象表示各个表格的数据结构,并通过@TableName注解指明所映射的具体表名;对于存在外键约束的情况,则可以利用@TableField(fill= FieldFill.INSERT_UPDATE)等方式处理字段填充逻辑。 ##### 用户(User)和订单(Order)之间的一对多关系为例: ```java // User.java import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; @Data public class User { @TableId(type = IdType.AUTO) private Long id; private String name; } // Order.java import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("t_order") public class Order { @TableId(type = IdType.AUTO) private Long orderId; private Long userId; // 关联用户的ID private Double amount; } ``` #### 四、Mapper接口编写 基于上述实体类构建各自的Mapper接口继承自BaseMapper<T>泛型基类,从而获得CRUD功能的同时也能方便后续扩展其他业务需求。当涉及到复杂的查询场景时,可以通过XML方式或者注解形式定义SQL语句来进行联合检索操作。 ##### 对应上面提到的例子来说,如果想要获取某个用户及其所有的订单记录,可以在UserMapper中添加如下方法签名: ```java List<UserOrderVo> selectUserOrders(@Param("userId")Long userId); ``` 其中UserOrderVo是一个视图对象(View Object),用来封装最终返回给前端的结果集。 #### 五、Service层编码 在服务端内部调用之前声明好的DAO层API执行具体的读写动作,并负责协调多个持久化组件之间的交互过程。考虑到事务管理和异常捕获等因素的影响,建议采用AOP切面编程技术简化这部分代码的设计难度。 #### 六、Controller控制器暴露RESTful API 最后一步就是对外提供HTTP请求入口点了,即按照标准规范书写@RequestMapping标注下的处理器函数,接收来自客户端提交过来的各种参数后转发至后台做进一步加工计算再响应结果回去。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值