非spring管理的类获取spring配置参数

非spring管理的类获取spring配置参数


您好,项目时当初遇到了一个问题,就是用mybaties拦截器获取所有日志的sql并记录进入日志系统时,需要读取spring的yml配置参数。发现网上教的大部分方法都无效(@Value等)。究其原因,发现,大部分方法都是基于spring管理的类获取配置参数,其方法可行,而此处的mybaties拦截器无法交给spring管理(其原因尚未可知,感兴趣可以自行查看),所以通常方法无法获取。
于是经过多次尝试,发现,可以通过SpringContextHolder获取Environment。当我们成功获取到Environment时,问题就有希望了。
一下时我获取配置文件中的mass.log.sql值。代码如下:

private Boolean getSqlLog() {
        /**
         * 获取Environment
         * */
        Environment env = SpringContextHolder.getBean("environment");
        /**
         * 获取配置文件列表
         * */
        Object propertySources = BeanUtil.getProperty(env,"propertySources");
        List<Object> list = BeanUtil.getProperty(propertySources,"propertySourceList");
        /**
         * 初始化sqlLog false
         * */
        Boolean sqlLog = false;
        /**
         * 从配置文件列表中找mass.log.sql属性,找到后返回
         * */
        for (Object object : list){
            if(object instanceof EncryptableEnumerablePropertySourceWrapper){
                EncryptableEnumerablePropertySourceWrapper wapper = (EncryptableEnumerablePropertySourceWrapper) object;
                Object _sqlLog = wapper.getProperty("mass.log.sql");
                if(_sqlLog!=null){
                    sqlLog = Boolean.valueOf(String.valueOf(_sqlLog));
                    break;
                }
            }
        }
        return sqlLog;
    }

希望对大家有所帮助。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值