spring boot aop死活不生效

新手上路,请多包涵

自己的spring boot练手的项目,昨天下午吃饭之前还好好的,请求之前日志打的好好的
回来之后什么也没干,死活就是不生效了,百度了一晚上,找了N种方法都不行
项目结构
图片描述

日志代码

@Aspect     // 表示一个切面bean
@Component  // bean容器的组件注解。虽然放在contrller包里,但它不是控制器。如果注入service,但我们又没有放在service包里
@Order(3)   // 有多个日志时,ORDER可以定义切面的执行顺序(数字越大,前置越后执行,后置越前执行)
public class MyLog{
    private Logger log = LoggerFactory.getLogger(this.getClass());

    //申明一个切点 里面是 execution表达式
    @Pointcut("execution(public * com.sc.starry_sky.*.*.*.*(..))")
    private void controllerAspect(){}

    //请求method前打印内容
    @Before(value = "controllerAspect()")
    public void methodBefore(JoinPoint joinPoint){
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();

        //打印请求内容
        log.info("===============请求内容===============");
        log.info("请求地址:"+request.getRequestURL().toString());
        log.info("请求方式:"+request.getMethod());
        log.info("请求类方法:"+joinPoint.getSignature());
        log.info("请求类方法参数:"+ Arrays.toString(joinPoint.getArgs()));
        log.info("===============请求内容===============");
    }

    //在方法执行完结后打印返回内容
    @AfterReturning(returning = "o",pointcut = "controllerAspect()")
    public void methodAfterReturing(Object o ){
        log.info("****************************后置通知****************************");
        log.info("返回值:" + o);       // 响应的内容---方法的返回值responseEntity
        log.info("****************************分割符****************************");
    }
}

pom文件

<!-- AOP依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>

contorller 修饰符全是public

@Controller
public class Login extends BaseController {
    @PostMapping("/doLogin")
    @ResponseBody
    public Map<String,Object> doLogin(String name){
        HashMap<String, Object> resultMap = new HashMap<String, Object>();
        try{
            PageData user = this.getPageData();
            
            
            UsernamePasswordToken token = new UsernamePasswordToken(user.getString("username"), user.getString("password"));
            SecurityUtils.getSubject().login(token);
            resultMap.put("status", 200);
            resultMap.put("message", "登录成功");
            return resultMap;
        }catch(Exception e){
            resultMap.put("status", 500);
            resultMap.put("message", e.getMessage());
            
            return resultMap;
        }
        
    }
    
    
    @GetMapping("/loginPage")
    public ModelAndView loginPage(String name){
        ModelAndView mv = new ModelAndView();
        System.out.println("in loginPage**************************************************");
        mv.setViewName("login-regist");
        return mv;
    }
    

    @GetMapping("/unauthorized")
    public ModelAndView unauthorized(String name){
        ModelAndView mv = new ModelAndView();
        mv.setViewName("login-regist");
        return mv;
    }
    
}

之前生效的时候没有那么多东西,下面的jar包都是后来网上搜的解决方案,所有的方法都试过了是真没招了,不知道到底怎么了

阅读 5.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题