Spring Boot学习--资源配置
来源:互联网 发布:淘宝店铺转让 淘铺王 编辑:程序博客网 时间:2024/06/06 06:59
这部分内容主要对应官网文档的第24部分Externalized Configuration,我也不知道怎么来准确翻译这个东西。这块涉及到的是配置文件中的环境变量的相关内容。
按照官方的意思是,Spring Boot提供了多种换取环境变量或者配置信息的方式。如properties 文件YAML文件,环境变量和客户端指令等。你可以通过@Value注解和@ConfigurationProperties来获取这些信息。
废话少说,我们来看下具体内容,优先级依次降低的:
1. Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active). 2. @TestPropertySource annotations on your tests. 3. @SpringBootTest#properties annotation attribute on your tests. 4. Command line arguments. 5. Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property) 6. ServletConfig init parameters. 7. ServletContext init parameters. 8. JNDI attributes from java:comp/env. 9. Java System properties (System.getProperties()). 10. OS environment variables. 11. A RandomValuePropertySource that only has properties in random.*. 12. Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants) 13. Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants) 14. Application properties outside of your packaged jar (application.properties and YAML variants). 15. Application properties packaged inside your jar (application.properties and YAML variants). 16. @PropertySource annotations on your @Configuration classes. 17. Default properties (specified using SpringApplication.setDefaultProperties).
上面这些东西,一般阅读起来应该是没问题的,下面我们来看下其中的一些用法,有些我感觉用的少的也不会在这里讲了。
文档中首先给出的是一个通过@Value来获取值得示例,下面是我更改之后的:
/** * Created by pangkunkun on 2017/9/5. */@Componentpublic class MyBean implements CommandLineRunner{ @Value("${name}") private String name; @Override public void run(String... args){ System.out.println("name:"+name); }}
为了能够直接验证,我实现了CommandLineRunner接口,启动的时候直接就能看到效果。
添加个application.properties文件,并加入name的信息:
name=pangkun
启动项目就可以看到如下信息:
2017-09-05 14:26:50.347 INFO 4816 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup2017-09-05 14:26:50.398 INFO 4816 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http)name:pangkun2017-09-05 14:26:50.401 INFO 4816 --- [ main] s.e.configuration.MyConfigApplication : Started MyConfigApplication in 1.994 seconds (JVM running for 3.516)
这里的name:pangkun就是从配置文件中获取到的信息。
接下来官方给出的是:
java -jar app.jar --name="Spring"
这是需要先把项目打包,然后执行,这里的name会覆盖application.properties文件中的信息。
前面有说过打包成jar的方法,这里再演示下,切换到项目的目录,运行mvn package指令:
我这里用的是git的工具,直接cmd用dos也是可以的。
执行成功之后在target文件夹中会看到项目的jar包MyConfig-1.0-SNAPSHOT.jar。
在客户端中执行:
java -jar MyConfig-1.0-SNAPSHOT.jar --name="Spring"
会看到name输出的值为Spring。
SPRING_APPLICATION_JSON方式传递信息:
SPRING_APPLICATION_JSON='{"foo":{"bar":"spam"}}' java -jar MyConfig-1.0-SNAPSHOT.jar
修改代码:
@Componentpublic class MyBean implements CommandLineRunner{ @Value("${name}") private String name; @Value("${foo.bar}") private String fooBar; @Override public void run(String... args){ System.out.println("name:"+name); System.out.println("fooBar:"+fooBar); }}
也可以改为以下两种方式:
java -Dspring.application.json='{"foo":"bar"}' -jar MyConfig-1.0-SNAPSHOT.jarjava -jar MyConfig-1.0-SNAPSHOT.jar --spring.application.json='{"foo":"bar"}'
文档也也有说明JNDI 这种方式:
java:comp/env/spring.application.json
但是这个东西我没玩过,还是不说了,有弄过的朋友可以给我留言。
有关项目的配置文件部分可以参考我以前的文章Springboot引用外部配置文件。
同时配置多个环境下的配置文件,可以采用
application-{profile}.properties
如,开发环境application-dev.properties,生产环境application-prod.properties,在application.properties中指定要使用的配置文件:
spring.profiles.active=dev
- Spring Boot学习--资源配置
- spring boot框架学习之重要注解3注解方式读取外部资源配置文件
- spring boot框架学习学前掌握之重要注解(4)-通过注解方式读取外部资源配置文件2
- spring mvc 静态资源配置
- 学习国际化资源配置1.
- Spring Resource 读取资源配置文件
- Spring Security资源配置入门讲解
- Spring boot 学习知识点
- spring-boot学习
- Spring Boot 学习(一)
- spring-boot学习笔记
- Spring Boot学习笔记
- spring-boot 深入学习
- spring -boot 搭建学习
- spring boot示例学习
- Spring Boot 学习
- Spring Boot学习笔记
- spring boot 入门学习
- 剑指Offer_面试题41_和为s的两个数字 VS 和为s的连续正数序列
- RxTools一款强大实用的工具类集合
- 《Spring3实战》摘要(6)事务管理
- Unity陀螺仪功能
- ardupilot & px4 书写自己的app & drivers (二)
- Spring Boot学习--资源配置
- 670. Maximum Swap
- 正则表达式-速记理解技巧
- c/c++
- Vue.js-----轻量高效的MVVM框架,组件利用Props传递数据)
- wordpress 修改博客文章标题字体大小
- JavaScript种==和===
- 浅谈CTP期货行情交易API
- C语言产生随机数