You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AOP后Spring Boot 2应用无法启动问题求助

问题分析与解决方案

我一眼就发现你遇到的启动问题根源在AOP的切入点表达式上!

你当前的切入点execution(* com.murphys.lcm.controller.*(..))只会匹配com.murphys.lcm.controller包直接下的类,但你的控制器都在mvc和rest这两个子包里,这个表达式匹配不到目标控制器,反而会错误地尝试匹配Spring框架内部的一些bean,这就是导致启动时出现大量org.s...开头错误的原因。

正确的写法

把切入点表达式改成带两个点的形式,这样就能匹配controller包以及所有子包下的所有方法了:

@Aspect
@Component
public class LogActionAspect {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
    // 两个点表示包含controller包下的所有子包
    @Before("execution(* com.murphys.lcm.controller..*(..))")
    public void getAllAdvice(JoinPoint joinPoint){
        // 这里可以添加日志逻辑,比如打印方法名、参数等
        logger.info("调用方法:{},参数:{}", 
                    joinPoint.getSignature().getName(), 
                    Arrays.toString(joinPoint.getArgs()));
    }
}

额外排查建议

如果修改后还是启动失败,可以检查这几点:

  • 确认你的项目已经引入了Spring AOP依赖,比如Spring Boot项目要加spring-boot-starter-aop依赖
  • 确保LogActionAspect所在的包被Spring的组件扫描覆盖到了
  • 尽量避免切入点范围太广,精准匹配你需要的包,防止误匹配Spring内部bean

内容的提问来源于stack exchange,提问作者robert trudel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:42:26