背景:使用springboot shiro的框架,集成CAS时,配置类通过@Value获取不到配置数据
问题查了比较久,最后确认下来是由于shiro的生命周期管理配置造成的,具体解决方法如下:
1、将lifecycleBeanPostProcessor设置为static,必须设置为static,否则读取变量不会生效
@Bean(name = "lifecycleBeanPostProcessor")
public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}
2、设置CAS相关的属性变量,此部分变量需要给其他的类调用可使用static,如若只是本类使用可不添加。
CasUtils配置类中的属性片段
//cas服务器地址
private static String casServerUrlPrefix;
//本客户端对外提供的访问地址
private static String clientHostUrl;
...其他属性略
@Value("${cas.server-url-prefix}")
public void setCasServerUrlPrefix(String casServerUrlPrefix){
ShiroCasConfiguration.casServerUrlPrefix = casServerUrlPrefix;
}
@Value("${cas.client-host-url}")
public void setClientHostUrl(String clientHostUrl){
ShiroCasConfiguration.clientHostUrl= clientHostUrl;
}
#application.yml中的cas相关配置
cas:
server-url-prefix: http://192.168.0.100:8080/cas
client-host-url: http://192.168.0.101:8080
#其他属性略
网友评论