一.@ConfigurationProperties(“person”)与@Value("${person.name}")的区别:
- 1.前者直接全配置 后者需要一个一个的配置
- 2.前者支持校验 后者不支持
- 3.前者不知此#{11*2}计算 后者支持
- 4.前者支持松散语法 即userName与user_name与user-name没有区别 后者就不行
- 5.前者可以配置复杂数据(map\map里面list之类的 后者不支持
二@PropertySource(value = {“classpath:person.properties”})
与@ImportResource(locations = {“classpath:bean.xml”})
- @ConfigurationProperties(“person”)配合@PropertySource(value = {“classpath:person.properties”}) 可以加载自定义的配置文件,但是只支持.properties文件
- @ImportResource(locations = {“classpath:bean.xml”}可以导入自定义的spring的xml文件。 当然这样很麻烦 可以直接通过平配置类来解决(需要@Configuration 和@bean)来使
三.占位符
-
1… r a n d o m . i n t 或 {random.int}或 random.int或{randomuuid}等等随机生成一个占位符
-
1.${name:hello}占位:如果name没有就会默认用hello来替换
四.profile 在不同的环境用不同的配置文件
- 1.若是.properties配置文件:
编写多个application-{自己取}.properties,然后在application.properties文件中通过下面这行代码来使用哪个配置文件 - 若是yaml文件 则直接通过—来表示文档快
##使用多种版本的方法: - 通过spring.profiles.active=dev
-通过命令行:在idea中:
或者使用打包成jar之后 通过java -jar jar名字 --spring.profiles.active=dev
4. 通过配置虚拟机参数的方式
5. idea中
命令行和虚拟机参数命令行的优先级更高,如果都配置了 则用命令行配置的。
五.配置文件的位置
1.springboot的优先级
- 访问工程下config/application.properties
- 访问工程下application.properties
- 访问classpath:下面config/propertie
- 访问classpath:下面propertie
并且他们都是形成互补的,如果都定义了相同的会使用优先级高的,如果高优先级没有,可以加载下面的配置文件。
2.在已经开发打包好了,需要重新加载另一个配置文件可以通过在命令行的方式java -jar jar名字 --spring.config.location=G:/application.properties
在已经打包好这样是非常方便的,可以不用再重新修改java内部的配置文件。
3.通过外部来加载配置文件的优先级
红色部分用的比较多:
1.第一个就是通过java -jar jar名字 --server.port=8081 --server.contextPath=hello
6.就是加载与jar包在同一个路径下profile配置文件
7加载内部的profile配置文件
6.就是加载与jar包在同一个路径下配置文件
7加载内部的profile配置文件