舊歡如夢 2017-07-05 02:40 采纳率: 33.3%
浏览 5149
已采纳

springboot项目下,提示shiro与aop冲突

我用的是springboot微框架。权限管控用的shiro,现在要使用aop,总是报以下错误:
Error creating bean with name 'shiroFilterFactoryBean' defined in class path resource [com/zcy/salesPlatform/shiro/ShiroConfig.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'identifier' at character position 0

  • com.zcy.salesPlatform.action.sell.order.*.*(..)

我的aop类:

 package com.zcy.salesPlatform.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LoggerAop {

    @Pointcut("* com.zcy.salesPlatform.action.sell.order.*.*(..)")
    public void loggerAspect(){}

    @Before("loggerAspect()")
    public void before() {
        System.out.println("切面before执行了");
    }

    /*@After("loggerAspect()")
    public void after() {
        System.out.println("切面after执行了");
    }

    @AfterReturning("loggerAspect()")
    public void afterReturning() {
        System.out.println("切面afterReturning执行了");
    }

    @AfterThrowing("loggerAspect()")
    public void afterThrowing() {
        System.out.println("切面afterThrowing执行了");
    }*/

    /*@Around("loggerAspect()")
    public Object around(ProceedingJoinPoint thisJoinPoint){
        Object obj = null;
        System.err.println ("切面around before执行了");
        try {
            thisJoinPoint.proceed();
        } catch (Throwable e) {
            e.printStackTrace ();
        }
        System.err.println ("切面around after执行了");
        return obj;
    }*/
}

我的shiro。config类:

 package com.zcy.salesPlatform.shiro;

import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * spring boot 集成shiro的配置 http://blog.csdn.net/catoop/article/details/50520958
 * 
 * @author luanhaibin
 */

@Configuration
public class ShiroConfig {

    private static Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();

    @Bean(name = "shiroFilterFactoryBean")
    public ShiroFilterFactoryBean shiroFilterFactoryBean() {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(securityManager());
        shiroFilterFactoryBean.setLoginUrl("/user/login");
        shiroFilterFactoryBean.setSuccessUrl("/menu/menuIndex");
//      
        filterChainDefinitionMap.put("/menu/**", "authc");
//      filterChainDefinitionMap.put("/personcenter/**", "authc");
        filterChainDefinitionMap.put("/**", "anon");
//      
        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
        return shiroFilterFactoryBean;
    }

    @Bean(name = "securityManager")
    public DefaultWebSecurityManager securityManager() {
        DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
        defaultWebSecurityManager.setRealm(shiroRealm());

        return defaultWebSecurityManager;
    }

    @Bean(name = "shiroRealm")
    public ShiroRealm shiroRealm() {
        return new ShiroRealm();
    }

    @Bean(name = "lifecycleBeanPostProcessor")
    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
//      AbstractNativeSessionManager a=new  AbstractNativeSessionManager();
        return new LifecycleBeanPostProcessor();
    }



}

请教各位老师各位大神,怎么破?

  • 写回答

3条回答 默认 最新

  • 毁灭y 2017-07-05 06:04
    关注

    @Pointcut("* com.zcy.salesPlatform.action.sell.order.*.*(..)")
    这一段写的是否有问题啊?
    写成这样 :
    @Pointcut ("execution ( public * com.zcy.salesPlatform.action.sell.order.*.*(..))")
    貌似这个execution 是表达式最关键的地方吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?