Springboot入門(六)尚硅谷-@PropertySource&@ImportResource&@Bean加載外部配置文件

Springboot配置二
4、@PropertySource&@ImportResource&@Bean

@PropertySource:加載指定的配置文件;
@ConfigurationProperties(prefix = “person”)默認從全局配置文件中獲取值;

/**

  • 將配置文件中配置的每一個屬性的值,映射到這個組件中
  • @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定;
  •  prefix = "person":配置文件中哪個下面的所有屬性進行一一映射
    
  • 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能;
  • @ConfigurationProperties(prefix = “person”)默認從全局配置文件中獲取值;

/
@PropertySource(value = {“classpath:person.properties”})
@Component
@ConfigurationProperties(prefix = “person”)
//@Validated
public class Person {
/
*
*
*
*
/
//lastName必須是郵箱格式
// @Email
//@Value("${person.last‐name}")
private String lastName;
//@Value("#{11
2}")
private Integer age;
//@Value(“true”)
private Boolean boss;
在這裏插入圖片描述
@ImportResource:導入Spring的配置文件,讓配置文件裏面的內容生效;
Spring Boot裏面沒有Spring的配置文件,我們自己編寫的配置文件,也不能自動識別;
想讓Spring的配置文件生效,加載進來;@ImportResource標註在一個配置類上
就是說要自己寫的xml配置文件使用的是@ImportResource來導入到配置類上面

@ImportResource(locations = {"classpath:beans.xml"})
導入Spring的配置文件讓其生效

不來編寫Spring的配置文件

<?xml version="1.0" encoding="UTF‐8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring‐beans.xsd">
    <bean id="helloService" class="com.atguigu.springboot.service.HelloService"></bean>
</beans>

在這裏插入圖片描述

SpringBoot推薦給容器中添加組件的方式;推薦使用全註解的方式
1、配置類@Configuration------>Spring配置文件
2、使用@Bean給容器中添加組件

/**
 * @Configuration:指明當前類是一個配置類;就是來替代之前的Spring配置文件
 
 * 在配置文件中用<bean><bean/>標籤添加組件
 *
 */
@Configuration
public class MyAppConfig {
    //將方法的返回值添加到容器中;容器中這個組件默認的id就是方法名
    @Bean
    public HelloService helloService02(){
        System.out.println("配置類@Bean給容器中添加組件了...");
        return new HelloService();
    }
}

在這裏插入圖片描述
4、配置文件佔位符
1、隨機數

${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}

2、佔位符獲取之前配置的值,如果沒有可以是用:指定默認值

person.last‐name=張三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
如果沒有配置personlastName 就會報錯
在這裏插入圖片描述

在這裏插入圖片描述
就是你配置類有這個,而配置的properties中沒有這個的配置的值,那麼會報錯,如果都沒有的話就不會報錯

5、Profile
在這裏插入圖片描述
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、命令行:
打包後再cmd中運行改jar包,然後運行下面的命令行的方式來運行
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
可以直接在測試的時候,配置傳入命令行參數
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
3、虛擬機參數;
-Dspring.profiles.active=dev
在這裏插入圖片描述
6、配置文件加載位置
springboot 啓動會掃描以下位置的application.properties或者application.yml文件作爲Spring boot的默認配置文

–file:./config/ 當前項目的根目錄的config文件夾下
–file:./ 當前項目的根目錄下
–classpath:/config/ /resource 目錄下的config文件夾下
–classpath:/ /resource目錄下
優先級由高到底,高優先級的配置會覆蓋低優先級的配置;

在這裏插入圖片描述
SpringBoot會從這四個位置全部加載主配置文件;互補配置;

我們還可以通過spring.config.location來改變默認的配置文件位置

項目打包好以後,我們可以使用命令行參數的形式,啓動項目的時候來指定配置文件的新位置;指定配置文件和默
認加載的這些配置文件共同起作用形成互補配置;

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章