Springboot入门之配置文件
创始人
2025-06-01 05:30:01
0

1.全局固定配置文件

1.1)application.properties

1.2)application.yml

1.3)bootstrap vs application [.yml/properties]

boostrap 被父ApplicationContext加载,加载顺序优先与application[使用ApplicationContext加载],boostrap中配置的信息无法被修改覆盖【常用于Springcloud配置中心,加解密秘钥等配置】,application中的配置信息可以被修改覆盖【用于项目的自动化配置】。

 

2.yml使用

2.1)配置

data:aInteger: 1aLong: 10000aFloat: 3.14aDouble: 3.14159aBoolean: trueaString: adcdaArray: 1,2,3aList: 1,2,3aSet: 1,2,3aMap: {name: "zha", age: 18}

2.2)读取

2.2.1)@Value读取

@Value("${data.aInteger}")
private Integer intValue;@Value("${data.aLong}")
private Long longValue;@Value("${data.aFloat}")
private Float floatValue;@Value("${data.aDouble}")
private Double doubleValue;@Value("${data.aBoolean}")
private Boolean booleanValue;@Value("${data.aString}")
private String stringValue;@Value("#{'$value.aArray}'.split(',')}")
private String[] values;@Value("#{'${data.aList}'.split(',')}")
private List valueList;@Value("#{'${data.aSet}'.split(',')}")
private Set valueSet;@Value("#{${data.aMap}}")
private Map valueMap;

2.2.2)@ConfigurationProperties配置

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;@Component
@ConfigurationProperties(prefix = "data")
public class DataConfig {private Integer aInteger;private Long aLong;private Float aFloat;private Double aDouble;private Boolean aBoolean;private String aString;private Integer[] aArray;private List aList;private Set aSet;private Map aMap;public Integer getaInteger() {return aInteger;}public void setaInteger(Integer aInteger) {this.aInteger = aInteger;}public Long getaLong() {return aLong;}public void setaLong(Long aLong) {this.aLong = aLong;}public Float getaFloat() {return aFloat;}public void setaFloat(Float aFloat) {this.aFloat = aFloat;}public Double getaDouble() {return aDouble;}public void setaDouble(Double aDouble) {this.aDouble = aDouble;}public Boolean getaBoolean() {return aBoolean;}public void setaBoolean(Boolean aBoolean) {this.aBoolean = aBoolean;}public String getaString() {return aString;}public void setaString(String aString) {this.aString = aString;}public Integer[] getaArray() {return aArray;}public void setaArray(Integer[] aArray) {this.aArray = aArray;}public List getaList() {return aList;}public void setaList(List aList) {this.aList = aList;}public Set getaSet() {return aSet;}public void setaSet(Set aSet) {this.aSet = aSet;}public Map getaMap() {return aMap;}public void setaMap(Map aMap) {this.aMap = aMap;}@Overridepublic String toString() {return "DataConfig{" +"aInteger=" + aInteger +", aLong=" + aLong +", aFloat=" + aFloat +", aDouble=" + aDouble +", aBoolean=" + aBoolean +", aString='" + aString + '\'' +", aArray=" + Arrays.toString(aArray) +", aList=" + aList +", aSet=" + aSet +", aMap=" + aMap +'}';}
}

3.多个profile appllication-{profile}.properties/yml

3.1)appllication.yml

server:port: 80spring:profiles:active: dev

3.2)appllication-dev.yml

server:port: 8080

3.3)appllication-prod.yml

server:port: 8081

3.4)激活制定profile

3.4.1)spring.profiles.active=dev

3.4.2) java -jar xxx.jar -spring.profiles.active=dev

3.4.3) 设置java虚拟机参数 -DSpring.profiles.active=dev

4.配置文件加载顺序

-file:./config

-file:./

-classpath:./config

-classpath:./

优先级又高到底,加载application.yml/properties

外部配置文件        java -jar xxx.jar --server.port=8080 --server.context=/abc

5.核心注解

@SpringBootApplication(启动相关) = @SpringBootConfiguration(@Configuration) + @EnableAutoConfiguration + @ComponentScan(可无 手动加载Bean)


@SpringBootConfiguration     配置加载注解
@EnableAutoConfiguration    自动化配置注解
@ComponentScan                 扫描+加载Bean

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}
), @Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {}

6.自动化配置流程【META-INF/spring.factories】

@EnableAutoConfiguration
=> @Import({AutoConfigurationImportSelector.class})
=> AutoConfigurationImportSelector.selectImports
=> AutoConfigurationImportSelector.getAutoConfigurationEntry
=> AutoConfigurationImportSelector.getCandidateConfigurations
=> SpringFactoriesLoader.loadFactoryNames        扫描具有META-INF/spring.factories包

 MybatisPlus spring.factories 示例

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration,\com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

相关内容

热门资讯

巴菲特正式退休,伯克希尔进入阿... 2026.01.01本文字数:2603,阅读时长大约4分钟作者 |第一财经 樊志菁2026年的第一天...
英伟达、AMD的GPU,被曝即... 财联社1月1日讯(编辑 史正丞)2026年伊始,算力产品的价格标签就成为资本市场关注的焦点。根据最新...
价格狂飙190%,“钴奶奶”发... 本文来源:时代财经 作者:周立 图片来源:视觉中国近期,刚果(金)暂停所有手工开采的钴矿物的加工和...
深夜!茅台放大招:1499买飞... 【导读】1499买飞天茅台,每人每天限购12瓶中国基金报记者 泰勒大家好,茅台放大招了!2026年的...
印度航空发表坠机声明 6月12日消息,印度航空发表声明称,该公司一架计划从艾哈迈达巴德机场起飞前往伦敦的客机,当地时间12...
罗永浩的科技春晚,除了「翻车」... 「核心提示」产品乏善可陈、现场状况频出,罗永浩的回归之路,为何越走越艰难?作者 |高宇哲刘杨“这么多...
凌晨,全线跳水!美联储降息,大... 2025年收官日,美股全线下挫。北京时间2026年1月1日凌晨,美股三大指数尾盘集体跳水,纳指、标普...
伯克希尔进入阿贝尔时代,巴菲特... 2026年的第一天,金融界迎来了一件诸多投资者曾希望永远不会发生的大事:“股神”巴菲特即将功成身退。...
遭23亿索赔,欣旺达要“真心话... 既是对这家锂电制造商过去发展的一次全面检验,也是对未来发展方向的一次深刻反思。文/每日资本论2026...
豪掷14.83亿元!天原股份拟... 中经记者 陈家运 北京报道2025年12月30日,天原股份(002386.SZ)发布公告称,其全资子...