spring boot学习笔记1,配置文件,profiles 多环境配置,配置文件加载位置以及顺序

一、配置文件

1、配置文件注入

配置文件中最大的注意点就是要有空格,尤其是yml中

1、properties配置文件在idea中默认是utf-8可能会乱码,解决方法是将file encoding里面配置编码的旁边的复选框勾上。

2、@value和@ConfigurationProperties的使用

@value对单个属性进行注入
@ConfigurationProperties 对应全局属性注入,要进行指定前缀“prefix = “person””
@PropertySource 是引入自定义配置文件

@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    //@Value("name")
    private String name;
    private Integer age;
    }

@ImportResource(locations = {“classpath:xxx.xml”}):加载自定义配置的bean文件。一般不建议这样使用。推荐使用配置类进行配置

@configguration
public class MyAppConfig{
	//将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
	@Bean
	public HelloService hellService(){
		return new HelloService;
	}
}

2、配置文件占位符

1、在配置文件中可以直接使用随机数如:

${random.uuid},${random.int},${random.long},${random.int(10)}

2、使用配置文件中的变量

person.name=zhangsan
dog.name = ${person.name}

3、profiles 多环境配置

1、多profile文件
我们在主配置文件编写的时候,文件名可以是application-{profile}.properties/yml,默认使用application.properties的配置
2、yml支持多文档块方式,—表示文档分隔

///---表示文档分隔
server:
	port: 8081
spring:
	profiles:
		active: prod	
---
server:
	port: 8083	
spring:
	profiles: dev	
	---
server:
	port: 8084	
spring:
	profiles: prod

3、激活指定profile
1)在配置文件中指定 spring.profiles.active=dev
2)命令行:
java -jar spring-boot-myproject.jar --spring.profiles.active=dev;可以直接在测试的时候,配置传入命令行参数
3)虚拟机参数: -Dspring.profiles.active=dev

4、配置文件加载位置

spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为spring boot的默认配置文件

- file:./config/
- file:./
- classpath:./config/
- classpath:./

  • 以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容,** 互补配置 **
  • 我们也可以通过配置spring.config.location来改变默认配置
    外部配置文件的使用:只在运维时起作用,即项目打包部署时指定
java -jar spring-boot-myproject.jar --spring.config.location=G:/xx.properties

项目打包以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些文件会形成互补的作用。

5、外部配置加载顺序

1、命令行优先级最高
2、由jar外向jar内查找,优先加载带profile,再来加载不带profile
3、@configuration等注解上的@propertySource

6、自动配置原理

可以在org.springframework.boot:spring-boot-autoconfigure:2.1.1release(版本号根据自己的项目而定)里面的spring-boot-autoconfigure-2.1.1.release.jar下面的META-INF下面的文件spring.factories,该文件中有很多配置类,需要进行配置时,若不知道都有哪些属性,可打开参考里面的属性。
2、@Condition派生注解(spring注解版原生的@Conditional作用)
作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置里面所有内容才生效。

@Conditional扩展注解作用(判断是否满足当前指定条件)
@ConditionalOnJava系统的java版本是否符合要求
@ConditionalOnBean容器中存在指定Bean
@ConditionOnMissingBean容器中不存在指定Bean
@ConditionalOnExpression满足SpEL表达式指定
@ConditionalOnClass系统中指定的类
@ConditionalOnMissingClass系统中没有指定的类
@ConditionalOnSingleCandidate容器中只有一个指定的Bean,或者这个Bean是首选Bean
@ConditionalOnProperty系统中指定的属性是否有指定的值
@ConditionalOnResource类路径下是否存在指定资源文件
#通过启用debug属性,来让控制台打印出那些类匹配上,哪些类还未导入
debug=true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!针对您的问题,您可以按照以下步骤配置多环境启动的配置文件: 1. 在 `src/main/resources` 目录下创建三个配置文件,分别为 `application.properties`、`application-dev.properties`、`application-prod.properties`。其中,`application.properties` 文件是默认的配置文件,`application-dev.properties` 文件是开发环境的配置文件,`application-prod.properties` 文件是生产环境的配置文件。 2. 在 `application.properties` 文件中,添加以下配置: ``` spring.profiles.active=dev ``` 这个配置表示默认情况下启用 `dev` 环境的配置。 3. 在 `application-dev.properties` 文件中,添加针对开发环境的配置,例如: ``` server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/dev_db spring.datasource.username=root spring.datasource.password=root123 ``` 4. 在 `application-prod.properties` 文件中,添加针对生产环境的配置,例如: ``` server.port=80 spring.datasource.url=jdbc:mysql://localhost:3306/prod_db spring.datasource.username=root spring.datasource.password=root123 ``` 5. 在 `pom.xml` 文件中,添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ``` 6. 启动项目时,使用 `-Dspring.profiles.active=prod` 参数指定启用生产环境的配置。 以上就是配置多环境启动的配置文件的步骤。希望能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值