spring aop未生效,无报错等任何 已解决

spring aop未生效,无报错等任何 已解决 思路说明

1. 项目说明 :
老SSH框架结构分层时重构项目项目结构
在这里插入图片描述
新需求需要在记录个操作审计功能,跟记录日志差不多就是在service层操作的时候添加日志,于是想到用AOP去拓展在这里插入图片描述
在这里插入图片描述

2.写了个自定义注解跟切面类用来记录日志操作并存储,
3.这里都没有问题后来操作时发现
4.启动没问题AOP没生效,一开始以为是pointcut路径错误,后来检查无误后发现还是不行
5.找了很多地方后来发现在这里插入图片描述
因为是spring项目要在配置文件中添加aop启动,但是这个位置属于是这个的引用,需要在spring-mvc中添加才有用在这里插入图片描述
在这里插入图片描述
总算是解决了
折腾了半天

### Spring Boot 3 中 `@Valid` 注解不生效的原因及解决方案 在Spring Boot 3环境中遇到`@Valid`注解未能正常工作的情况,通常涉及多个方面的问题。具体原因可能包括缺少必要的依赖项、配置错误或是对不同验证框架的理解不足。 #### 缺少必要依赖 当升级到新的Spring Boot版本之后,如果项目提示缺失`javax.validation`相关类,则表明当前构建路径中确实不存在这些组件。虽然最初尝试通过引入`javax.validation:validation-api`来解决问题,但实际上还需要具体的实现库支持,比如Hibernate Validator[^1]。这是因为`javax.validation`仅定义了API标准,而实际的约束验证逻辑由特定提供者完成。因此,添加如下Maven依赖可以解决这个问题: ```xml <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency> ``` #### 配置与使用方式不当 关于`@Valid`和`@Validated`的选择问题,实际上两者都可以用于触发方法级别的参数校验功能。然而,在某些场景下推荐采用`@Validated`主要是因为它允许更灵活地指定分组以及能够更好地集成于Spring MVC环境之中。但这并不意味着必须同时应用于控制器层和服务层;只要确保目标对象被正确标记即可。 对于希望在校验失败时抛出自定义异常而非默认行为(即返回400响应),可以在全局范围内捕获并处理`MethodArgumentNotValidException`或是在局部位置利用AOP切面技术拦截异常消息[^2]。 另外值得注意的是,即使已经成功设置了上述条件,仍然可能出现因请求体解析阶段就已报错而导致无法进入后续校验流程的情形。此时应确认JSON序列化/反序列化的设置无误,并且实体属性上的约束声明有效。 #### 示例代码展示如何启用校验机制 下面给出一段简单的例子说明怎样在一个RESTful API端点内应用数据校验特性: ```java @RestController @RequestMapping("/users") public class UserController { @PostMapping public ResponseEntity<String> createUser(@RequestBody @Valid User user){ // 处理业务逻辑... return new ResponseEntity<>("User created successfully", HttpStatus.CREATED); } } ``` 在此基础上,假设`User`类具有若干字段及其对应的JSR-380规范中的约束标注: ```java import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; class User { @NotBlank(message="Name cannot be empty.") private String name; @Size(min=6, max=30,message="Password length must between {min} and {max}.") private String password; // getter setter omitted. } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值