这篇文章给大家介绍弹簧引导中实现外部配置的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
应用程序。属性大家都不陌生,我们在开发的时候,经常使用它来配置一些可以手动修改而且不用编译的变量,这样的作用在于,打成战争包或者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(“关键”);弹簧引导中实现外部配置的方法