Spring boot 整合 shiro 出现 org.apache.shiro.UnavailableSecurityManagerException: 错误

最开始参考的是这个 文档 但是并没有解决我的问题,因为他的配置和我的是一样(差不多)的

https://www.cnblogs.com/ginponson/p/6217057.html

然后看到此篇博客

https://bbs.csdn.net/topics/391924615

<!-- 相当于调用SecurityUtils.setSecurityManager(securityManager) -->
    <bean
        class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="staticMethod"
            value="org.apache.shiro.SecurityUtils.setSecurityManager" />
        <property name="arguments" ref="securityManager" />
    </bean>

https://www.cnblogs.com/kibana/p/8953566.html 这篇讲述了 如何配置 MethodInvokingFactoryBean

以下是我的配置

  //主要是这个,但是需要用到 getSecurityManager 所有就贴出来
@Bean
    public MethodInvokingFactoryBean getMethodInvokingFactoryBean() {
        MethodInvokingFactoryBean methodInvokingFactoryBean=new MethodInvokingFactoryBean();
        methodInvokingFactoryBean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager");
        methodInvokingFactoryBean.setArguments(getSecurityManager());
        return methodInvokingFactoryBean;
    }


 /**
     *  创建 DefaultWebSecurityManager
     *  需要关联一个Realm
     *  @Qualifier 获取指定的Bean
     * @return
     */
    @Bean(name = "webSecurityManager")
    public SecurityManager getSecurityManager(){
        DefaultWebSecurityManager webSecurityManager=new DefaultWebSecurityManager();
        /**
         * 配置缓存测量
         */
        //配置redis缓存策略
        RedisCacheManager redisCacheManager = shiroRedisCache().getCacheManager();
        webSecurityManager.setCacheManager(redisCacheManager);

        //配置 session 管理
        SessionManager sessionManager =shiroSessionCache(redisCacheManager).sessionManager();
        webSecurityManager.setSessionManager(sessionManager);

        /**
         * 关联多个Realm
         */
        Collection<Realm> realms =new ArrayList<>();
      //  realms.add(realmExtension().getJwtRealm());
        realms.add(realmExtension().getUserRealm(doorwayService));
        webSecurityManager.setRealms(realms);
        Collection<SessionListener> listeners = new ArrayList<>();
        return webSecurityManager;
    }