Spring基础篇(9)-普通JAVA类动态读取@Value的值

Spring支持读取启动参数覆盖配置文件中的参数。所以普通JAVA类中若想读取Spring的配置参数,可以使用下面的方式。

1. Spring支持的读取方式

SpringBoot2.x基础篇—常用注解(@Value&@ConfigurationProperties)中。可以使用如下的配置读取yml的配置:

@RestController
public class UserController {
    private static Logger logger = LoggerFactory.getLogger(UserController.class);

    @Value("${java.scheduled.validateTime}")
    private volatile String time;
}

依赖BeanFactory可以动态的读取@Value注解的值。

2.JAVA类动态读取@Value的值

@Slf4j
@Service
public class SpringBeanFactoryUtil implements BeanFactoryAware {
    private static BeanFactory beanFactory;

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;
    }

    /**
     * 动态解析yml的值。
     * @param value ${}格式
     * @return 若是解析失败或者未查找到,均返回null
     */
    public static String resolve(String value) {
        try {
            if (beanFactory != null && beanFactory instanceof ConfigurableBeanFactory) {
                return ((ConfigurableBeanFactory) beanFactory).resolveEmbeddedValue(value);
            }
        }catch (Exception e){
            log.error("",e);
        }

        return null;
    }
}

使用方式:

在普通JAVA类中,直接使用下面的代码就可以动态的读取Spring配置文件的值。

SpringBeanFactoryUtil.resolve("${spring.cloud.config.profile}");

推荐阅读

更多的学习目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容