Spring Boot 环境变量读取 和 属性对象的绑定

凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量。

如:

@Configuration
public class MyWebAppConfigurer implements EnvironmentAware
        {
    private static final Logger logger = LoggerFactory.getLogger(MyWebAppConfigurer.class);

    private RelaxedPropertyResolver propertyResolver;

    @Value("${spring.datasource.url}")
    private String myUrl;

    /**
     * 这个方法只是测试实现EnvironmentAware接口,读取环境变量的方法。
     */
    @Override
    public void setEnvironment(Environment env) {
        logger.info(env.getProperty("JAVA_HOME"));
        logger.info(myUrl);
        String str = env.getProperty("spring.datasource.url");
        logger.info(str);
        propertyResolver = new RelaxedPropertyResolver(env, "spring.datasource.");
        String url = propertyResolver.getProperty("url");
        logger.info(url);
    }
}

@Controller @Service 等被Spring管理的类都支持,注意重写的方法 setEnvironment 是在系统启动的时候被执行。

或者如下Controller:

@Controller
public class PageController implements EnvironmentAware{

    @Override
    public void setEnvironment(Environment environment) {
        String s = environment.getProperty("JAVA_HOME");
        System.out.println(s);
    }
}

我们还可以通过@ConfigurationProperties 读取application属性配置文件中的属性。

@Configuration
@ConditionalOnClass(Mongo.class)
@EnableConfigurationProperties(MongoProperties.class)
public class MongoAutoConfiguration {

    @Autowired
    private MongoProperties properties; 

}
  • @ConditionOnClass表明该@Configuration仅仅在一定条件下才会被加载,这里的条件是Mongo.class位于类路径上
  • @EnableConfigurationProperties将Spring Boot的配置文件(application.properties)中的spring.data.mongodb.*属性映射为MongoProperties并注入到MongoAutoConfiguration中。
  • @ConditionalOnMissingBean说明Spring Boot仅仅在当前上下文中不存在Mongo对象时,才会实例化一个Bean。这个逻辑也体现了Spring Boot的另外一个特性——自定义的Bean优先于框架的默认配置,我们如果显式的在业务代码中定义了一个Mongo对象,那么Spring Boot就不再创建。
@ConfigurationProperties(prefix = "spring.data.mongodb")
public class MongoProperties {

    private String host;
    private int port = DBPort.PORT;
    private String uri = "mongodb://localhost/test";
    private String database;

    // ... getters/ setters omitted
} 

它就是以spring.data.mongodb作为前缀的属性,然后通过名字直接映射为对象的属性,同时还包含了一些默认值。如果不配置,那么mongo.uri就是mongodb://localhost/test。

时间: 2024-10-30 00:16:39

Spring Boot 环境变量读取 和 属性对象的绑定的相关文章

十五、Spring Boot 环境变量读取 和 属性对象的绑定

凡是被spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量. 如: @Configuration public class MyWebAppConfigurer implements EnvironmentAware { private static final Logger logger = LoggerFactory.getLogger(MyWebAppConfi

Spring boot接受json赋值给java对象

Spring boot接受json赋值给java对象 新建 模板 小书匠 前言 写这个东西,一方面是我自己在做项目的时候,对json的使用还不是十分的熟悉,对spring boot的使用也不是很熟悉,但是呢,活总是要干的吧.自己就慢慢的摸索,摸出来了.记录一下.自己最近也在看<Spring 实战>,希望早日看完,系统的学习一下spring的知识点 环境 IDEA JDK 1.8 Spring boot 1.5.8 JSON简单介绍 之前看了许多的json的教程,但是呢总是觉得看会了,自己却还是

spring boot 环境配置(profile)切换

Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 spring boot 连接Mysql spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2) – 使用pagehelper实现分页 spring boot集成mybatis(3) – mybatis ge

bash环境变量读取顺序

bash环境变量读取顺序: 交互式登录的用户: /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc 非交互式登录的用户: ~/.bash_profile --> ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

spring boot 在不同环境下读取不同配置文件的一种方式

在工程中,通常有根据不同的环境读取不同配置文件的需求,对于spring boot 来说,默认读取的是application.yml 或者 application.properties.为了区分不同的环境,也提供了profile的机制.例如,当有一个开发环境的配置文件为application-dev.yml的时候,通过设置 spring.profiles.actives = dev, 程序启动的时候,会优先取 application-dev.yml中的值,然后再去取 application.yml

spring boot中通用应用程序属性

可以在application.properties文件内部application.yml,文件内部或命令行开关中指定各种属性.本附录提供了常见的Spring Boot属性列表以及对使用它们的基础类的引用. 核心属性: 键 默认值 描述 debug false 启用调试日志. info.*   要添加到信息端点的任意属性. logging.config   日志记录配置文件的位置.例如,用于logback的`classpath:logback.xml`. logging.exception-con

从零学 spring cloud:1-1课:Spring Boot 环境搭建

要入门,是先把环境先部署起来 一.开发IDE 目前 JetBranins 的是使用最多的,下载地扯 :https://www.jetbrains.com/idea/?fromMenu,如果不习惯使用英语,汉化也很容易.当前版本是2019.1.1 ,工具更新较快.不同的版本,汉化文件不一样,要注意.至于破解,就不必要了.基于我国强大的淘宝,只要你花上15块钱,就可以买到JetBranins所有工具的激活码,这15块还是要花的,省时省力.再说说如何汉化,所有工具的汉化也简单,只要下载一个语言包,就足

Spring boot 环境搭建

1.pom .xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <mo

spring boot快速入门 2 :属性配置

属性配置:在application.properties中配置 第一步:配置端口号和项目名 并启动 第二步:在浏览器查看请求 第二种配置方式: 在application.yml中配置.(较为常用) 注:两个配置文件只保留一个 另一个删除即可 第一步:配置并启动项目项目 第二步:在浏览器中查看请求 自定义属性配置: 第一步: 在application.yml中配置自定义属性 第二步:在controller 中调用并启动项目 第三步:浏览器查看请求 配置中使用配置内容: 第一步:在applicati