SpringBoot配置文件注入相關

SpringBoot配置相關

1.配置文件注入

  在SpringBoot裏能夠經過四個註解進行配置文件的注入,分別是:java

@ConfigurationProperties   @Value@PropertySource@ImportResourcespring

  1.@ConfigurationProperties 使用方式

 居中好比個人配置文件application.yml裏面是這種springboot

person:
 lastName: hello
 age: 18
 boss: false
 birth: 2017/12/12
 maps: {k1: v1,k2: 12}
 lists:
  - lisi
  - zhaoliu
 dog:
   name: 小狗
   age: 12

 JavaBeanapp

/**
- 將配置文件中配置的每個屬性的值,映射到這個組件中
- @ConfigurationProperties:告訴SpringBoot將本類中的全部屬性和配置文件中相關的配置進行綁定;prefix = "person":指定 配置文件中哪一個前綴下面的全部屬性進行 一一 映射
	- 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能,
	- 使其成爲組件能夠經過下面的兩種中的任何一種方式
	    1.@Component //若是這裏添加了註解那麼在自動配置類的時候就不用添加	
	    2.@EnableConfigurationProperties(Person.class)註解.
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

	private String lastName;
	private Integer age;
	private Boolean boss;
	private Date birth;

	private Map<String,Object> maps;
	private List<Object> lists;
	private Dog dog;
}

 2.@Value 使用方式

 @Value 只能從application.yml中讀取spring-boot

@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;

 3.@ConfigurationProperties 和 @Value 取值比較和使用場景

compare.png

 若是說,咱們只是在某個業務邏輯中須要獲取一下配置文件中的某項值,使用@Value;  若是說,咱們專門編寫了一個javaBean來和配置文件進行映射,咱們就直接使用@ConfigurationProperties;ui

 4.@PropertySource 使用方式

 @PropertySource:加載指定的配置文件(非application.yml);必需要加 @Component,讓其spring進行管理  須要配合@ConfigurationProperties(prefix = "") 指定prefix 綁定到JavaBean中spa

* 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能;
*  @ConfigurationProperties(prefix = "person」) 默認從全局配置文件中獲取值 即默認只能從 application.properties 或者 application.yml 中獲取;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource(value = {"classpath:person.properties"})
@Data
public class PersonConfig {
	
	private String lastName;
	private String firstName;

}

 person.properties 文件code

person.lastName=johnny
persong.firstName=candy

 5.@ImportResource

導入Spring的配置文件 xml 格式的 放在 主運行類上,Spring Boot裏面沒有Spring的配置文件,咱們本身編寫的配置文件,也不能自動識別xml

 想讓Spring的配置文件生效,加載進來;@ImportResource標註在一個配置類上blog

@ImportResource(locations = {"classpath:bean.xml"})
@SpringBootApplication
public class SpringBoot01HelloworldQuickApplication {
}

bena.xml

<?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>

2.配置文件處理器

 做用: 配置文件處理器的主要做用是爲了 在編寫配置文件的時候有提示功能

 方式1 在pom.xml文件裏引入如下依賴:

<--導入配置文件處理器,配置文件進行綁定就會有提示-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

 方式2 在IDEA建立Spring-Boot項目的時候 勾選

configureProcess.png

我的博客系統:https://www.askajohnny.com 歡迎訪問! 本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索