弹簧引导中实现外部配置的方法

  介绍

这篇文章给大家介绍弹簧引导中实现外部配置的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

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

春boo默认已经配置了很多环境变量,例如,tomcat的默认端口是8080项目的contextpath是“/钡鹊?可以在这里看春天引导默认的配置信息http://docs.spring。io/spring-boot/docs/当前快照/引用/htmlsingle/# boot-features-external-config

弹簧引导允许你自定义一个应用程序。属性文件,然后放在以下的地方,来重写春天引导的环境变量或者定义你自己环境变量

    <李>当前目录的“/配置”的子目录下李 <>李当前目录下李 <李>类路径根目录的“/config”包下李 <李>类路径的根目录下
      李,

1点和2点适合在生产环境下,例如,打包成可执行的jar包

春天引导中实现外部配置的方法

这里要注意,“当前目录”是指演示。jar包的目录下,要使配置文件生效,在使用Java jar demo.jar的命令时,必须先路由到演示。jar包的路径下,再使用其命名,

春天引导中实现外部配置的方法

3点和4点适合在开发环境下

春天引导中实现外部配置的方法

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

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

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

 java jar演示。jar——服务器。端口=9000 

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

 java jar演示。jar——spring.application.json=& # 39; {“foo":“bar"} & # 39; 

2。通过@ value注解来读取

@RestController   @RequestMapping (“/task")   公开课TaskController {      @ value (“$ {connection.remoteAddress}“)私人字符串地址;      @RequestMapping (value=https://www.yisu.com/zixun/{"/", " "})   公共字符串hellTask (@ value (" $ {connection.username} ")字符串名称){      返回“你好任务! !”;   }      }

3。通过环境接口来获取,只需要把接口注进去即可

@RestController   @RequestMapping (“/task")   公开课TaskController {      @ autowired环境电动车;      @ value (“$ {connection.remoteAddress}“)私人字符串地址;      @RequestMapping (value=https://www.yisu.com/zixun/{"/", " "})   公共字符串hellTask (@ value (" $ {connection.username} ")字符串名称){      字符串密码=ev.getProperty (“connection.password”);   返回“你好任务! !”;   }      }

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

@ component   公开课SystemConfig {      私有静态属性道具;      公共SystemConfig () {      尝试{   资源资源=new ClassPathResource (“/application.properties");//道具=PropertiesLoaderUtils.loadProperties(资源);   }捕捉(IOException e) {   e.printStackTrace ();   }   }/* *   *获取属性   * @param关键   * @return   */公共静态字符串getProperty (String键){      返回道具==null, # 63;空:props.getProperty(关键);      }/* *   *获取属性   * @param关键属性的关键   * @param defaultValue属性价值   * @return   */公共静态字符串getProperty(字符串,字符串defaultValue) {      返回道具==null, # 63;空:道具。getProperty(关键、defaultValue);      }/* *   *获取properyies属性   * @return   */公共静态属性getproperty () {   返回道具;   }      }//用的话,就直接这样子   字符串值=https://www.yisu.com/zixun/SystemConfig.getProperty(“关键”);

弹簧引导中实现外部配置的方法