springboot之properties
来源:互联网 发布:名侦探柯南手表淘宝 编辑:程序博客网 时间:2024/06/14 09:15
本例将采用maven管理,代码托管在github上,地址:https://github.com/wolf909867753/springboot。
1。创建maven-module,properties,并在pom.xml中添加springboot依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>properties</artifactId> <packaging>war</packaging> <name>springboot-properties Demo</name> <url>http://maven.apache.org</url> <!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <dependencies> <!-- Spring Boot Web 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>properties</finalName> </build></project>
工程目录如下:
代码参考github code
使用application.properties配置文件加载的测试DEMO
参考com.springboot.properties此包下的code
1.创建HomeProperties类
@Component@ConfigurationProperties(prefix="home")public class HomeProperties { /** * 省份 */ private String province; /** * 城市 */ private String city; /** * 描述 */ private String desc; getter/setter.....}
2.配置文件
application-pro.properties
home.province = shang dong sheng home.city = wei fang shi home.desc = [application-pro] i come from ${home.province} ${home.city}.
application-dev.properties
home.province = shandong home.city = weifang home.desc = [application-dev] i come from ${home.province}--${home.city}
application.properties
spring.profiles.active=pro
3.测试
参考test下com.springboot.properties.PropertiesTest.java
@SpringBootApplicationpublic class PropertiesTest implements CommandLineRunner{ @Autowired private HomeProperties homeProperties; @Override public void run(String... strings) throws Exception { System.out.println(">>>>>>>>>>>>>> "+homeProperties.toString()); } /** * 使用application.yml运行输出以下结果: * HomeProperties{province='山东省', city='潍坊市', desc='我来自山东省潍坊市.'} * * 使用application.properties根据spring.profiles.active的value运行加载其对应的application-*.properties输出以下结果: * HomePropertiesYML{province='shang dong sheng', city='wei fang shi', desc='[application-pro] i come from shang dong sheng wei fang shi.'} */ public static void main(String[] args) { SpringApplication.run(PropertiesTest.class,args); }}
运行main方法,加载使用application.properties根据spring.profiles.active的value运行加载其对应的application-*.properties输出以下结果:
HomeProperties{province='shang dong sheng', city='wei fang shi', desc='[application-pro] i come from shang dong sheng wei fang shi.'}
=======================================================================================
使用application.yml配置文件加载的测试DEMO
参考com.springboot.properties此包下的code
1.创建HomePropertiesYML.java
@Componentpublic class HomePropertiesYML { /** * 省份 */ @Value("${home.province}") private String province; /** * 城市 */ @Value("${home.city}") private String city; /** * 描述 */ @Value("${home.desc}") private String desc; getter/setter....}
2.配置文件
application.yml 注意项目下不能同时存在application.properties 和 application.yml
home: province : 山东省 city : 潍坊市 desc : 我来自${home.province}${home.city}.
3.测试
参考test下com.springboot.properties.YMLpropertiesTest.java
@SpringBootApplicationpublic class YMLpropertiesTest implements CommandLineRunner { @Autowired private HomePropertiesYML homePropertiesYML; @Override public void run(String... strings) throws Exception { System.out.println(">>>>>>>>>>>> "+homePropertiesYML.toString()); } /** * 使用application.yml运行输出以下结果: * HomePropertiesYML{province='山东省', city='潍坊市', desc='我来自山东省潍坊市.'} * * 使用application.properties根据spring.profiles.active的value运行加载其对应的application-*.properties输出以下结果: * HomePropertiesYML{province='shang dong sheng', city='wei fang shi', desc='[application-pro] i come from shang dong sheng wei fang shi.'} */ public static void main(String[] args) { SpringApplication.run(YMLpropertiesTest.class,args);// System.exit(-1); }}
运行main方法,加载使用application.yml配置文件,输出以下结果:
HomePropertiesYML{province='山东省', city='潍坊市', desc='我来自山东省潍坊市.'}
小结:
/** * Spring Boot 配置文件 使用application.properties * 测试类参考test目录下的PropertiesTest.java *一、自动配置 * Spring Boot 提供了对应用进行自动化配置。相比以前 XML 配置方式,很多显式方式申明是不需要的。二者,大多数默认的配置足够实现开发功能,从而更快速开发。 * 什么是自动配置? * Spring Boot 提供了默认的配置,如默认的 Bean ,去运行 Spring 应用。它是非侵入式的,只提供一个默认实现。 * 大多数情况下,自动配置的 Bean 满足了现有的业务场景,不需要去覆盖。但如果自动配置做的不够好,需要覆盖配置。 * 比如通过命令行动态指定某个 jar ,按不同环境启动。那怎么办?这里先要考虑到配置的优先级。 * * Spring Boot 不单单从 application.properties 获取配置,所以我们可以在程序中多种设置配置属性。按照以下列表的优先级排列: * 1.命令行参数 * 2.java:comp/env 里的 JNDI 属性 * 3.JVM 系统属性 * 4.操作系统环境变量 * 5.RandomValuePropertySource 属性类生成的 random.* 属性 * 6.应用以外的 application.properties(或 yml)文件 * 7.打包在应用内的 application.properties(或 yml)文件 * 8.在应用 @Configuration 配置类中,用 @PropertySource 注解声明的属性文件 * 9.SpringApplication.setDefaultProperties 声明的默认属性 * * 可见,命令行参数优先级最高。这个可以根据这个优先级,可以在测试或生产环境中快速地修改配置参数值,而不需要重新打包和部署应用。 * 还有第 6 点,根据这个在多 moudle 的项目中,比如常见的项目分 api 、service、dao 等 moudles,往往会加一个 deploy moudle 去打包该业务各个子 moudle, * 应用以外的配置优先。 * * 二.@ConfigurationProperties(prefix="home") * 通过 @ConfigurationProperties(prefix = “home”) 注解,将配置文件中以 home 前缀的属性值自动绑定到对应的字段中。 * 同是用 @Component 作为 Bean 注入到 Spring 容器中。 * * 注意:当reources中同时存在application.properties ,application.yml文件时,spring优先启动application.properties配置文件 */
多环境配置 很多场景的配置,比如数据库配置、Redis 配置、注册中心和日志配置等。在不同的环境,我们需要不同的包去运行项目。所以看项目结构,有两个环境的配置: application-dev.properties:开发环境 application-prod.properties:生产环境 Spring Boot 是通过 application.properties 文件中,设置 spring.profiles.active 属性,比如 ,配置了 dev ,则加载的是 application-dev.properties : # Spring Profiles Active spring.profiles.active=dev 那运行PropertiesTest应用启动类,从控制台中可以看出,是加载了 application-dev.properties 的属性输出: HomeProperties{province='shang dong', city='wei fang', desc='[application-dev] i come from shang dong wei fang.'} 将 spring.profiles.active 设置成 prod,重新运行,可得到 application-pro.properties的属性输出: HomeProperties{province='shang dong sheng', city='wei fang shi', desc='[application-pro] i come from shang dong sheng wei fang shi.'} 根据优先级,顺便介绍下 jar 运行的方式,通过设置 -Dspring.profiles.active=pro 去指定相应的配置: mvn package java -jar -Dspring.profiles.active=prod springboot-properties-0.0.1-SNAPSHOT.jar
- springboot之properties
- Springboot配置文件之properties
- 微服务,微架构[五]之springboot读取properties文件
- 四、SpringBoot 读取Properties
- springBoot配置文件application.properties
- SpringBoot获取properties配置
- springboot application.properties详解
- SpringBoot 配置文件 application.properties
- SpringBoot 自定义properties
- springboot-properties配置
- SpringBoot获取properties配置
- 3.SpringBoot-properties配置
- springboot application.properties配置
- SpringBoot Common Application Properties
- springBoot--properties配置
- SpringBoot读取application.properties文件
- SpringBoot-application.properties配置清单
- Springboot的配置文件Application.properties
- SDR NB-IoT进展
- Oracle中ROWNUM伪列和ROWID伪列的用法与区别
- WMI中的SQL,WQL简明教程系列5:工具,命名空间,路径
- FormStartPosition 枚举
- java.nio.channels.FileChannel中lock()与tryLock()方法的区别(Android Studio代码环境)
- springboot之properties
- javascript笔记
- node+express下获取请求参数
- 系分教程第一章 绪论 笔记一
- 使用Pods报_OBJC_CLASS_$_XXX解决
- Banner实现图片轮播
- 文章标题
- ButterKnife题后话
- Shiro的URL匹配规则(AntPathMatcher)