1. Configuration files
Spring Boot uses a global configuration file, and the frontal cortex file name is fixed;
- Application.properties
- Application.yml
The role of the configuration file: Modify the default value of the Springboot auto-configuration; Springboot at the bottom of the automatic configuration for us;
Yaml (Yaml Ain ' t Markup Language)
YAML a Markup Language: is a markup language
YAML isn ' t Markup Language: not a markup language;
Markup Language:
The previous configuration file; Most of the xxx.xml files are used;
YAML:YML is a file of Yaml (Yaml Ain ' t Markup Language) language, data-centric, more suitable for configuration files than JSON, XML, http://www.yaml.org/Reference syntax specification
YAML: Sample Configuration
1 Server: 2 port:8081
Xml:
1 < Server > 2 < Port >8081</port>3</Server >
The configuration file is placed under the Src/main/resources directory or classpath/config
Some default configuration values can be modified by the global configuration file
2. YAML syntax
1. Basic syntax
K: (Space) V: Indicates a pair of key-value pairs (spaces must have);
Controls the hierarchical relationship with the indentation of a space , as long as the left-aligned column of data is the same level of
Server: port:8081 Path:/hello
Attributes and values are also case sensitive;
2. The notation of the value
Literal: Normal value (number, String, Boolean)
K: (space) V: literally directly to write;
String default without single or double quotation marks
"": double quotation marks; A special character string that is not escaped; special characters are meant to be represented by themselves.
Name: "Zhangsan \ n Lisi"; output: Zhangsan line Wrap Lisi
": single quotes; escapes special characters, and special characters end up as just a normal string data
Name: "Zhangsan \ Lisi"; output: Zhangsan \ n Lisi
Objects (attributes and values) (key-value pairs);
K:V: The next line to write the relationship of the object's properties and values; notice indentation
Object or the K:v way
1 Friends: 2 Lastname:zhangsan 3 age:20
In-line notation:
1 friends: {lastname:zhangsan,age:18}
Array (List,set)
An element in an array of bid-value bids
1 Pets: 2 -Cat 3 -Dog 4 -Pig
In-line notation
Pets: [Cat,pig,dog]
3. configuration file Value Injection
Configuration file
1 Person : 2 Lastname:zhangsan 3 age:18 4 false 5 birth:2017/ 12/12 6 maps: {k1:v1,k2:12} 7 lists: 8 - Lisi 9 - Zhaoliudog : one name: Puppy Age:2
JavaBean:
1 /**2 * Map the value of each property configured in the configuration file to this component3 *4 * @ConfigurationProperties: Tell Springboot to bind all the properties in this class and the configuration in the configuration file;5 * prefix = "person": Which of the following properties in the configuration file is one by one mapped6 *7 * Only this component is a component in the container to provide the @configurationproperties functionality8 */9 @ComponentTen@ConfigurationProperties (prefix = "person") One Public classPerson { A - PrivateString LastName; - PrivateInteger age; the PrivateBoolean boss; - PrivateDate Birth; - - PrivateMap<string, object>maps; + PrivateList<object>lists; - PrivateDog Dog;
We can import the configuration file processor, and we'll be prompted to write the configuration later.
1 <!--Import Profile processor, configuration file binding will be prompt-2 <dependency>3 <groupId> Org.springframework.boot</groupid>4 <artifactid>spring-boot-configuration-processor </artifactId>5 <optional>true</optional>6 </dependency>
Properties Config file default utf-8 may be garbled in idea
@Value get values and @configurationproperties comparisons
|
@ConfigurationProperties |
@Value |
Function |
Bulk injection properties in a configuration file |
Specify |
Loosely bound (loose syntax) |
Support |
Not supported |
Spel |
Not supported |
Support |
JSR303 Data validation |
Support |
Not supported |
Complex Type Encapsulation |
Support |
Not supported |
Configuration file Yml or properties they can get the value;
If we just need to get a value from a configuration file in a business logic, use @value;
If we specifically write a javaben to map the configuration file, we use the @configurationproperties directly;
@PropertySource & @ImportResource
@PropertySource: Load the specified configuration file
1 /**2 * Map the value of each property configured in the configuration file to this component3 *4 * @ConfigurationProperties: Tell Springboot to bind all the properties in this class and the configuration in the configuration file;5 * prefix = "person": Which of the following properties in the configuration file is one by one mapped6 *7 * Only this component is a component in the container to provide the @configurationproperties functionality8 * @ConfigurationProperties (prefix = "person") default value from global configuration file9 */Ten@PropertySource (value = {"Classpath:person.properties")}) One @Component A@ConfigurationProperties (prefix = "person") - //@Validated - Public classPerson { the - /** - * <bean class= "person" > - * <property name= "lastName" value= "literal/${key} Get values from environment variables, configuration files/#{spel}" ></property> + * </bean> - */ + A //LastName must be a mailbox format at //@Email - //@Value ("${person.last-name}") - PrivateString LastName; - //@Value ("#{11*2}") - PrivateInteger age; - //@Value ("true") in PrivateBoolean boss; - PrivateDate Birth; to + PrivateMap<string, object>maps; - PrivateList<object>lists; the PrivateDog Dog;
@ImportResource: Import the Spring configuration file and let the contents of the configuration file take effect;
Spring boot does not have a spring configuration file, and the configuration files we write ourselves are not automatically recognized;
Do not write the spring configuration file
1 <?xml version= "1.0" encoding= "UTF-8"?>2 <beans xmlns= "http://www.springframework.org/ Schema/beans "3 xmlns:xsi=" Http://www.w3.org/2001/XMLSchema-instance "4 xsi: schemalocation= "Http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/ Spring-beans.xsd ">56 class=" Com.young.springboot.service.HelloService "> </bean>78 </beans>
Want spring's configuration file to take effect, load it in, @ImportResource label on a configuration class
1 @ImportResource (locations = {"Classpath:beans.xml"})2 Import the spring configuration file for it to take effect
Springboot recommended ways to add components to a container; full annotation is recommended
1. Configuring the class =====spring configuration file
2. Adding components to the container using @bean
1 /**2 * @Configuration: Indicates that the current class is a configuration class, that is, to replace the previous spring configuration file3 *4 * Add components in the configuration file <bean></bean> tags5 */6 @Configuration7 Public classMyappconfig {8 9 //Add the return value of the method to the container; The default ID of this component in the container is the method nameTen @Bean One PublicHelloService HelloService () { ASYSTEM.OUT.PRINTLN ("Configuration class @bean adding components to the container ..."); - return NewHelloService (); - } the -}
Configuration file Placeholder
1. Random number
1 ${random.value}, ${random. int}, ${random. Long}2 ${random. int(10)}, ${random. int[1024,65536]}
2. Placeholder gets the previously configured value, if none can be used: Specify a default value
1 person.last-name= Zhang San ${random.uuid}2 person.age=${random. int}3 person.birth=2017/12/154 person.boss=false5 person.maps.k1=v16 person.maps.k2=v27 person.lists=a,b,c 8 person.dog.name=${person.hello:hello}_dog9 person.dog.age=15
Profile
1. Multiple profiles
When we write the main configuration file, the file name can be application-{profile}.properties/yml
Default use of application.properties configuration;
2.YML supports multi-document block mode
1 Server:2port:80813 Spring:4 Profiles:5 Active:prod6---7 Server:8port:80839 Spring:Ten Profiles:dev One--- A Server: -port:8084 - Spring: theProfiles:prod #指定属于哪个环境
3. Activate the specified profile
A. Specifying Spring.profiles.active=dev in the configuration file
B. Command line:
Java-jar Spring-boot-02-config-0.0.1-snapshot.jar--spring.profiles.active=dev; can be directly at the time of testing; Configure incoming command-line arguments
C. Virtual machine parameters:
-dspring.profile.active=dev
Configuration file Load Location
Springboot boot scans the application.proprties or application.yml file at the following location as the default profile for spring boot
-File:. /config/
-file:./
-classpath:/config/
-classpath:/
Priority is high-to-low, high-priority configuration overrides low-priority configurations
Springboot will load the master configuration file from four locations, and the complementary configuration;
We can also change the default configuration file location via Spring.config.location
After the project is packaged, we can use the form of command-line arguments to specify a new location for the configuration file when the project is started, specifying the configuration file and the default load of those profiles together to create a complementary configuration
Two Spring Boot Configuration