最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot配置文件加載方法詳細講解

 更新時間:2022年10月27日 10:57:57   作者:FlyLikeButterfly  
springboot默認讀取的配置文件名字是:“application.properties”和“application.yml”,默認讀取四個位置的文件:根目錄下、根目錄的config目錄下、classpath目錄下、classpath目錄里的config目錄下

配置文件的讀取順序

  • 根目錄/config/application.properties
  • 根目錄/config/application.yml
  • 根目錄/application.properties
  • 根目錄/application.yml
  • classpath目錄/config/application.properties
  • classpath目錄/config/application.yml
  • classpath目錄/application.properties
  • classpath目錄/application.yml

默認可讀取的配置文件全部都會被讀取合并,按照順序讀取配置,相同的配置項按第一次讀取的值為準,同一個目錄下properties文件比yml優(yōu)先讀取,通常會把配置文件放到classpath下,一般是resources里;

多壞境的配置文件

通??梢允褂?個配置文件:(yml也同理)

  • application.properties:默認配置文件
  • application-dev.properties:開發(fā)環(huán)境配置文件
  • application-prod.properties:生產環(huán)境配置文件
  • application-test.properties:測試環(huán)境配置文件

在application.properties里配置spring.profiles.active以指定使用哪個配置文件,可以配置dev、prod、test分別對應以-dev、-prod、-test結尾的配置文件;(yml配置文件也是同理)

也可以在命令行使用spring.profiles.active指定,例如:java -jarxxxxxx.jar--spring.profiles.active=dev;

個性化配置

對于更特殊的個性化配置可以使用@Profile注解指定;

@Profile標簽可以用在@Component或者@Configuration修飾的類上,可以標記類和方法,用來指定配置名字,然后使用spring.profiles.active指定該配置名字就可生效;

就像這樣:

package testspringboot.test2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
@Profile("myconfig")
public class MyConfig {
	@Bean("Tom")
	@Profile("A")
	public String a() {
		return "tomtom";
	}
	@Bean("Tom")
	@Profile("B")
	public String b() {
		return "TOMTOM";
	}
	@Bean("Tom")
	public String c() {
		return "ttoomm";
	}
}

然后寫一個controller類:

package testspringboot.test2;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test2controller")
public class Test2Controller {
	@Resource(name = "Tom")
	public String t;
	@RequestMapping("/test2")
	public String test2() {
		System.out.println(t);
		return "TEST2" + t;
	}
}

啟動類:

package testspringboot.test2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Test2Main {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		SpringApplication.run(Test2Main.class, args);
	}
}

配置文件里配置:

server.port=8888
server.servlet.context-path=/testspringboot
spring.profiles.active=myconfig

只指定myconfig配置,則MyConfig類里c()的bean生效,訪問結果是:

修改spring.profiles.active=myconfig,A,則MyConfig類里標記@Profile("A")的bean生效:

修改spring.profiles.active=myconfig,B,則標記@Profile("B")的bean生效:

如果去掉spring.profiles.active配置,則就找不到MyConfig里的配置了,啟動失敗:

自定義配置文件名稱和路徑

可以使用@PropertySource標簽指定自定義的配置文件名稱和路徑;(默認能加載到的配置文件也會先被加載)

通常只會用到設置配置文件的名字,并且配置文件的名字可以隨便定義,可以叫xxxx.properties、a.txt、b.abc等等,但是內容格式需要跟.properties一致,即kv格式,所以不能直接加載yml格式的配置文件;

@PropertySource默認加載路徑是classpath下,可以使用classpath:xxxx/xxxx/xxxx.properties指定目錄和文件,如果使用根目錄則需要使用file:xxxx/xxxx/xxxx.properties;

可以使用@PropertySource為啟動類指定springboot的配置文件,能夠做到使用一個main方法啟動兩個springboot實例,并各自使用不同的配置文件:

@SpringBootApplication
@PropertySource("classpath:a.properties")
@PropertySource(value = "file:a.properties", ignoreResourceNotFound = true)
public class Test2Main {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		SpringApplication.run(Test2Main.class, args);
	}
}

也可以使用@PropertySource配置bean,在使用@Component和@ConfigurationProperties時也可給bean指定特定配置文件:

放在resources下的配置文件tom.abc:

mybean.name=Tom
mybean.age=12

bean類ABC,配置tom.abc文件注入:

package testspringboot.test2;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties("mybean")
@PropertySource(value = "classpath:tom.abc")
public class ABC {
	public String name;
	public int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "ABC [name=" + name + ", age=" + age + "]";
	}
}

啟動類可以直接獲得bean:

package testspringboot.test2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
@PropertySource("classpath:a.properties")
@PropertySource(value = "file:a.properties", ignoreResourceNotFound = true)
public class Test2Main {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ConfigurableApplicationContext ctx = SpringApplication.run(Test2Main.class, args);
		System.out.println(ctx.getBean(ABC.class));
	}
}

啟動結果:

可以直接獲得配置的bean,也可以在代碼里使用@Resource或者@Autowired獲得;

加載yml文件

如果使用@PropertySource配置yml,則需要自定義一個factory實現:

package testspringboot.test2;
import java.io.IOException;
import java.util.Properties;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;
public class YmlPropertiesFactory implements PropertySourceFactory {
	@Override
	public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
		YamlPropertiesFactoryBean factoryBean = new YamlPropertiesFactoryBean();
		factoryBean.setResources(resource.getResource());
		factoryBean.afterPropertiesSet();
		Properties source = factoryBean.getObject();
		return new PropertiesPropertySource("myyml", source);
	}
}

然后在@PropertySource里配置factory和yml文件:@PropertySource(value = "myapplication.yml", factory = YmlPropertiesFactory.class),就可以加載yml配置文件了;

到此這篇關于SpringBoot配置文件加載方法詳細講解的文章就介紹到這了,更多相關SpringBoot配置文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java使用httpclient 發(fā)送請求的示例

    java使用httpclient 發(fā)送請求的示例

    HttpClient 是Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,并且它支持 HTTP 協議最新的版本和建議,這篇文章主要介紹了java使用httpclient 發(fā)送請求的示例,需要的朋友可以參考下
    2023-10-10
  • 常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實例

    常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實例

    這篇文章主要介紹了常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • SpringBoot整合Minio的過程(支持公有及私有bucket)

    SpringBoot整合Minio的過程(支持公有及私有bucket)

    Bucket 是存儲Object的邏輯空間,每個Bucket之間的數據是相互隔離的,對用戶而言,相當于存放文件的頂層文件夾,這篇文章主要介紹了SpringBoot整合Minio的過程(支持公有及私有bucket),需要的朋友可以參考下
    2025-03-03
  • java處理解析帶有反斜杠的json

    java處理解析帶有反斜杠的json

    在Java中操作JSON數據是一項常見的任務,其中一個常見的問題是如何在JSON字符串中包含反斜杠,本文主要介紹了java處理解析帶有反斜杠的json,感興趣的可以了解一下
    2024-01-01
  • 基于JavaMail實現郵件發(fā)送

    基于JavaMail實現郵件發(fā)送

    這篇文章主要為大家詳細介紹了基于JavaMail實現郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • java實現interceptor攔截登錄權限

    java實現interceptor攔截登錄權限

    Java里的攔截器是動態(tài)攔截action調用的對象,本文主要介紹了java實現interceptor攔截登錄權限,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • SpringBoot整合log4j日志與HashMap的底層原理解析

    SpringBoot整合log4j日志與HashMap的底層原理解析

    這篇文章主要介紹了SpringBoot整合log4j日志與HashMap的底層原理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • MyBatis Plus 入門使用詳細教程

    MyBatis Plus 入門使用詳細教程

    這篇文章主要介紹了MyBatis Plus 入門使用詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • java swing實現簡單的五子棋游戲

    java swing實現簡單的五子棋游戲

    這篇文章主要為大家詳細介紹了java swing實現簡單的五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Myeclipse部署Tomcat_動力節(jié)點Java學院整理

    Myeclipse部署Tomcat_動力節(jié)點Java學院整理

    這篇文章給大家介紹了Myeclipse部署Tomcat的相關知識,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-07-07

最新評論

徐汇区| 义乌市| 渭南市| 拜城县| 东城区| 乌苏市| 奉节县| 寿宁县| 侯马市| 札达县| 凌海市| 蒙自县| 琼中| 洛阳市| 酉阳| 长阳| 德庆县| 甘泉县| 阜平县| 北安市| 长汀县| 杭州市| 灵璧县| 绥化市| 环江| 四川省| 长汀县| 文水县| 清河县| 天峻县| 绿春县| 隆回县| 临海市| 且末县| 日土县| 垫江县| 井陉县| 姚安县| 万安县| 陇西县| 龙山县|