我们只需要选择需要用到的模板,向导会联网创建Spring Boot项目
默认生成的Spring Boot项目
– Spring Boot使用一个全局配置文件,配置文件名是固定的application.properties
application.yml
– 配置文件的作用:修改Spring Boot自动配置的默认值;Spring Boot在底层都给我们自动配置好;
以数据为中心,比json、xml等更适合做配置文件
配置例子:
sever:
port: 8081
字面量:普通的值(数字、字符串、布尔)
k: v:字面直接来写
字符串默认不用加上单引号或者双引号
“”:双引号,会变成转义字符,变成特殊的意义
name: “张三 \n 李四” 输出:张三 换行 李四
‘’:单引号,不会转义,只是一个普通的字符串数据
对象、Map(属性和值)(键值对):
k: v:在下一行写对象的属性和值得关系;注意缩进
对象也是k: v的方式
friends:
lastName: zhangsan
age: 20
行内写法:
friends: {lastName: zhangsan,age: 18}
用- 值表示数组中的一个元素
pets:
- dog
- cat
- pig
pets: [cat,dog,pig]
ConfigurationProperties | value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个一个在属性中指定 |
松散绑定(松散语法) | 支持(就是可以使用驼峰) | 不支持 |
spEl | 不支持 | 支持 |
JSR303数据效验 | 支持(@Validated、@email) | 不支持 |
复杂类型封装 | 支持 | 不支持 |
package com.blh.springBoot.bean;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.validation.constraints.Email;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中所有的属性和配置文件中的相关配置进行绑定(默认从配置文件中获取值)
* prefix = "person" 表示配置文件中person的所有属性进行一一映射
* 注意:只有这个组件在容器中的组件,才能提供@ConfigurationProperties此功能
* @author 25442
*
*/
@Component
@ConfigurationProperties(prefix = "person")
@Validated//效验
public class Person {
@Email//邮箱模式
String lastName;
Integer age;
boolean boss;
Date birth;
Map<String, Object> maps;
List<Object> lists;
Dog dog;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public boolean isBoss() {
return boss;
}
public void setBoss(boolean boss) {
this.boss = boss;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public List<Object> getLists() {
return lists;
}
public void setLists(List<Object> lists) {
this.lists = lists;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
@Override
public String toString() {
return "Person [lastName=" + lastName + ", age=" + age + ", boss=" + boss + ", birth=" + birth + ", maps="
+ maps + ", lists=" + lists + ", dog=" + dog + "]";
}
}
//加载类路径下的person.properties的内容并它绑定数据
@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
//@Validated//效验
public class Person {
// @Email//邮箱模式
String lastName;
Integer age;
boolean boss;
Date birth;
导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件我们自己编写的配置文件也不能自动识别。
想让Spring的配置文件生效,加载进来;就需要一个@ImportResource注解标注在 application类上
package com.blh.springBoot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
//导入spring的配置文件让其生效
@ImportResource(locations = {"classpath:beans.xml"})
@SpringBootApplication
public class SpringBoot02ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBoot02ConfigApplication.class, args);
}
}
SpringBoot推荐给容器中添加组件的方式:推荐使用全注解的方式
1、 配置类=====Spring配置文件
2、 使用@Bean给容器中添加组件
package com.blh.springBoot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.blh.springBoot.service.HelloService;
/*
* 指明当前类是一个配置类,就是来代替之前的spring配置文件
* 在配置文件中用 标签添加组件
*/
@Configuration
public class MyAppConfig {
//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService() {
System.out.println("@Bean给容器中添加组件了");
return new HelloService();
}
}
RandomValuePropertySource:配置文件中可以使用随机数
${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]}
可以在配置文件引用配置过的属性
${app.name:默认值}来指定找不到属性时的默认值
1、 多profile文件
我们在主配置文件编写的时候,文件名可以是application-{Proflile}.properties/yml
默认是使用application.properties里面的
server:
port: 8081
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev
---
spring:
profiles: prod #指定属于哪个环境
server:
port: 8084
1、在application.properties配置文件中指定要激活的配置文件
spring.profiles.active=dev
2、 命令行:
--spring.profileactive=dev
3、虚拟机参数
-Dspring.profile.active=dev