SpringBoot学习(3):配置文件的基本使用

### 一般把 resource 文件夹下面的 application.properties 改成 application.yml

1. 修改端口号为 9528

server:
  port: 9528

2. 端口后面还学要额外的添加字符串

server:
  port: 9528
  servlet:
    context-path: /zed

3. 指定激活 profile 

server:
  port: 9528
spring:
  profiles: prod
---
server:
  port: 9530
spring:
  profiles: dev
---
spring:
  profiles:
    active: prod

可以指定 spring.profiles.active = prod 表示整个项目使用 prod 这个端口号为 9528 的这一套环境

4. yml语法

  4.1 对于字符串的值,直接写和加上单引号是一样的效果的都表示原样输出,如果要做特殊处理比如 \n 换行的话,可以加双引号。

  4.2 对象,map 的书写:

对象是 k:v 的形式
friends:
  lastName: zhangsan
  age: 20

行内写法:
friends: {lastName: zhangsan, age: 18}

   4.2 数组的写法

使用 - 表示一个数组的元素
pets:
 - cat
 - dog
 - pig

行内写法
pets: [cat, dog, pig]

5. 配置文件的注入

  5.1 单值注入

yml文件配置

person:
  name: "zhangsan \n  lisi"
  age: 23
  boss: true
  birth: 2018/12/01

 对应的注入 代码 

@RestController
public class HelloController {
    // 单值注入
    @Value("${person.name}")
    private String name;

    @GetMapping("/hello")
    public String hello(){
        System.out.println(name);
        return name;
    }
}

因为是加了双引号所以打印出:

zhangsan 
  lisi

5.2 批量注入

yml配置

person:
  lastName: 大汤圆
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1, k2: 12}
  lists:
    - 张三
    - 李四
  dog:
    name: 小奶狗
    age: 2

实体类

//封装配置文件中person中的数据
@ConfigurationProperties(prefix = "person")
@Component
@Data
public class Person {
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<String> lists;
    private Dog dog;
}

这边要注意的是当我们加上这个批量注解 @ConfigurationProperties(prefix = "person") 就是会有一个提示提示报错,所以需到pom.xml进行配置:

<!-- 添加依赖 在使用 @ConfigurationProperties(prefix = "animals") 注入的时候会报错 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-configuration-processor</artifactId>
   <optional>true</optional>
</dependency>

依赖的 Dog 类

@Data
public class Dog {
    private String name;
    private Integer age;
}

最后的运行测试类

@RestController
public class HelloController {
    // 拿到容器里面 perosn 对象
    @Autowired
    private Person person;
    @GetMapping("/hello")
    public String hello(){
        System.out.println(person.toString());
        return person.toString();
    }
}

需要注意的是:

  @Component  当前的配置类放入IOC容器中

  @Autowired 从容器中拿到 @Component 存入到容器的 配置类

  • 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
  • 如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

6. 注入校验

@ConfigurationProperties(prefix = "person")
@Component
@Data
@Validated //数据校验
public class Person {

    @Email(message = "用户名必须是一个正确的邮箱格式")
    private String lastName;
    @Max(value = 200,message = "年龄不能超过200岁")
    @Min(value = 0,message = "年龄必须大于0岁")
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<String> lists;
    private Dog dog;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值