④. profile
4.
profile
- ①. profile 是用来完成不同环境下,配置动态切换功能的
- ②. profile配置方式
profile配置方式:
(1).多profile文件方式:提供多个配置文件,每个代表一种环境
application-dev.properties/yml 开发环境
application-test.properties/yml 测试环境
application-pro.properties/yml 生产环境
(2).yml多文档方式
在yml中使用 --- 分隔不同配置
③. profile的激活方式
激活方式:
(1).配置文件:再配置文件中配置:spring.profiles.active=dev
(2).虚拟机参数:在VM options 指定: -Dspring.profiles.active=dev
(3).命令行参数:java -jar xxx.jar --spring.profiles.active=dev
④. 代码演示
--- server: port: 8881 spring: profiles: dev --- server: port: 8882 spring: profiles: test --- server: port: 8883 spring: profiles: pro --- spring: profiles: active: pro
⑤. 内部配置加载顺序
5.内部配置加载顺序
①. file:./config/:当前项目下的/config目录下
②. file:./:当前项目的根目录
③. classpath:/config/:classpath的/config目录
④. classpath:/:classpath的根目录
注意:
加载顺序为上文的排列顺序,高优先级配置的属性会生效
⑤. 详解ConfigurationProperties
5>
.@ConfigurationProperties
①. @ConfigurationProperties
:从配置文件中读取配置项 [ prefix 表示项的前缀:配置项类中的类变量名要与前缀之后的配置项名称保持松散绑定(相同) ]
②. EnableConfigurationProperties(类.class)
:加载有@ConfigurationProperties注解的类
③. [ 注意 ]
可以使用Spring Boot提供的注解@ConfigurationProperties,该注解可以将Spring Boot的配置文件(默认必须为application.properties或application.yml)中的配置项读取到一个对象中
1.
加载有@ConfigurationProperties的注解的类
①. 创建配置项类JdbcProperties类,在该类名上面添加@ConfigurationProperties;
package com.itheima.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; /* ConfigurationProperties:从配置文件中读取配置项 prefix 表示项的前缀 配置项类中的类变量名要与前缀之后的配置项名称保持松散绑定(相同) * */ @ConfigurationProperties(prefix = "jdbc") public class JdbcProperties { private String driverClassName; private String url; private String username; private String password; public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
②. 引入标有ConfigurationProperties的类
注意:
这里注入JdbcProperties,有三种方式
@Configuration @EnableConfigurationProperties(JdbcProperties.class) public class JdbcConfig { @Bean public DataSource dataSource(JdbcProperties jdbcProperties){ DruidDataSource dataSource=new DruidDataSource(); dataSource.setDriverClassName(jdbcProperties.getDriverClassName()); dataSource.setUrl(jdbcProperties.getUrl()); dataSource.setUsername(jdbcProperties.getUsername()); dataSource.setPassword(jdbcProperties.getPassword()); return dataSource; } }
③. 测试类
@RestController public class HelloController { @Autowired private DataSource dataSource; @GetMapping("/hello") public String hell()throws Exception{ System.out.println(dataSource); return "Hello Spring boot"; } }
④.启动启动类,在页面可以看到如下信息表示成功!
2.
在方法上直接写@ConfigurationProperties
3.
注意事项:
- ①. 问题:如果出现如下提示,项目也可以运行;
②. 解决方案:如果要去掉上述的提示,则可以在 pom.xml 文件中添加如下依赖:
<dependency> <groupId> org.springframework.boot </groupId> <artifactId>spring-boot-configuration-processor</artifactId> <!--不传递依赖--> <optional>true</optional> </dependency>