博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot中application.properties优先级顺序
阅读量:6895 次
发布时间:2019-06-27

本文共 1994 字,大约阅读时间需要 6 分钟。

hot3.png

application.properties,用来配置一些可以手动修改而且不用编译的变量,这样的作用在于,打成war包或者jar包用于生产环境时,我们可以手动修改环境变量而不用再重新编译。

spring boo默认已经配置了很多环境变量,例如,tomcat的默认端口是8080,项目的contextpath是“/”等等(更多请看

spring boot允许你自定义一个application.properties文件,然后放在以下的地方,来重写spring boot的环境变量或者定义你自己环境变量 1.当前目录的 “/config”的子目录下 2. 当前目录下 3.** classpath根目录的“/config**”包下 4. classpath的根目录下

其中1、2点适合在生产环境下,例如,打包成可执行的jar输入图片说明

注意,“当前目录”是指demo.jar包的目录下,要使配置文件生效,在使用java -jar demo.jar的命令时,必须先路由到demo.jar包的路径下,再使用其命名 输入图片说明

另外,3、4点适合在开发环境下

输入图片说明

如果同时在四个地方都有配置文件,配置文件的优先级是从1到4。

使用配置文件之后,spring boot启动时,会自动把配置信息读取到spring容器中,并覆盖spring boot的默认配置,那么,我们怎么来读取和设置这些配置信息呢

1.通过命令行来重写和配置环境变量,优先级最高,例如可以通过下面的命令来重写spring boot 内嵌tomcat的服务端口,注意“=”俩边不要有空格

java -jar demo.jar --server.port=9000

2.通过**@value**注解来读取

@RestController@RequestMapping("/task")public class TaskController {    @Value("${connection.remoteAddress}") private String address;    @RequestMapping(value = {"/",""})    public String hellTask(@Value("${connection.username}")String name){        return "hello task !!";    }}
  1. 自定义工具栏
@Componentpublic class SystemConfig {    private static Properties props ;    public SystemConfig(){        try {            Resource resource = new ClassPathResource("/application.properties");//            props = PropertiesLoaderUtils.loadProperties(resource);        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * 获取属性     * @param key     * @return     */    public static String getProperty(String key){        return props == null ? null :  props.getProperty(key);    }    /**     * 获取属性     * @param key 属性key     * @param defaultValue 属性value     * @return     */    public static String getProperty(String key,String defaultValue){         return props == null ? null : props.getProperty(key, defaultValue);    }    /**     * 获取properyies属性     * @return     */    public static Properties getProperties(){        return props;    }}//用的话,就直接这样子String value = SystemConfig.getProperty("key");

转载于:https://my.oschina.net/u/1251536/blog/1537135

你可能感兴趣的文章
vs2017莫名自动退出调试状态可以尝试一下如下的方法
查看>>
Adaptive Execution让Spark SQL更高效更好用
查看>>
快手服务治理平台KESS的设计理念和实战
查看>>
微软发布Azure Cosmos DB产品以及新的物联网解决方案
查看>>
与Bob McWhirter的问答:WildFly Swarm更名为Thorntail项目
查看>>
Java 11正式发布,新特性解读
查看>>
《Fit for Purpose》作者访谈录
查看>>
与Brian Goetz聊Java的数据类
查看>>
Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数
查看>>
区块链将颠覆游戏业,游戏内商品未来也可带出游戏、自由交易
查看>>
Linux/Mac安装oh-my-zsh后不执行~/.bash_profile、~/.bashrc解决办法
查看>>
安卓开发_深入理解广播机制
查看>>
技术大咖云集,GIAC 2017全球互联网架构大会圆满落幕
查看>>
php取整函数ceil,floor,round,intval函数的区别
查看>>
elk5.x环境搭建与常用插件安装
查看>>
MySQL大表删除导致服务器变慢的分析
查看>>
windows server操作系统一定要关闭开机磁盘自检
查看>>
Java解析Excel文件
查看>>
MySQL数据类型简介
查看>>
由于未预料的错误,现在无法使用nautilus
查看>>