• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > 详解spring boot 使用application.properties 进行外部配置

详解spring boot 使用application.properties 进行外部配置

作者:liuxg2013 字体:[增加 减小] 来源:互联网 时间:2017-05-28

liuxg2013 通过本文主要向大家介绍了spring properties,spring读取properties,spring加载properties,spring获取properties,springmvc properties等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

spring boo默认已经配置了很多环境变量,例如,tomcat的默认端口是8080,项目的contextpath是“/”等等,可以在这里看spring boot默认的配置信息http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config

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 boo启动时,会自动把配置信息读取到spring容器中,并覆盖spring boot的默认配置,那么,我们怎么来读取和设置这些配置信息呢

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

java -jar demo.jar --server.port=9000
</div>

如果想要设置多个变量怎么办,可以已json的格式字符串来设置

java -jar demo.jar --spring.application.json='{"foo":"bar"}'
</div>

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 !!";
}

}

</div>

3.通过Environment接口来获取,只需要把接口注进去即可

@RestController
@RequestMapping("/task")
public class TaskController {

@Autowired Environment ev ;

@Value("${connection.remoteAddress}") private String address;

@RequestMapping(value = {"/",""})
public String hellTask(@Value("${connection.username}")String name){

  String password = ev.getProperty("connection.password");
  return "hello task !!";
}

}

</div>

4.可以自定义一个工具类,来获取,这种方式关键在于读取配置文件信息,适合自定义的配置信息,spring 容器默认的配置信息会读不到

@Component
public 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");

</div>

5.可以利用${…}在application.properties引用变量

myapp.name=spring
myapp.desc=${myapp.name} nice

</div>

6.可以在application.properties配置随机变量,利用的是RandomValuePropertySource类

my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,65536]}
</div>

简单的配置文件的使用就先写到这里,再看看其他高级用法,如Profiles还有@ConfigurationProperties

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解利用Spring加载Properties配置文件
  • Spring中配置和读取多个Properties文件的方式方法
  • 详解spring boot 使用application.properties 进行外部配置
  • 详解利用Spring加载Properties配置文件
  • Spring中配置和读取多个Properties文件的方式方法

相关文章

  • 2017-05-28详解 问题:HttpServlet cannot be resolved to a type
  • 2017-05-28Java LocalCache 本地缓存的实现实例
  • 2017-05-28java 算法之快速排序实现代码
  • 2017-05-28SpringMVC实现自定义类型转换器
  • 2017-05-28Java实现迅雷地址转成普通地址实例代码
  • 2017-05-28SpringMVC中解决@ResponseBody注解返回中文乱码问题
  • 2017-05-28Java 序列化和反序列化实例详解
  • 2017-05-28Java Iterator迭代器_动力节点Java学院整理
  • 2017-05-28Java异常继承结构解析_动力节点Java学院整理
  • 2017-10-21Java进阶之反射

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详解在spring boot中配置多个DispatcherServlet
    • Java实现一个达达租车系统的步骤详解
    • SpringBoot配置devtools实现热部署的方法
    • Java 中的 DataInputStream 介绍_动力节点Java学院整理
    • java实现将汉语转换为拼音功能
    • Java排序算法总结
    • java 基础之JavaBean属性命名规范问题
    • JAVA 注解详解及简单实例
    • 详解springboot+mybatis多数据源最简解决方案
    • java服务端微信APP支付接口详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有