SpringBoot读取配置文件的三种方式

SpringBoot读取yaml或者yml文件的三种方法

  • @Value注解(直接读取)
  • Environment(封装后读取)
  • 实体类封装属性(封装后读取)

配置文件里面的信息如下:

一、使用value注解赋值属性

在类中定义好属性,属性上方使用@Value("${name}")注解,一级属性直接写入属性名称,二级属性中间用.读取,数组类型数据用数组[ ]读取

  • 单个使用方便,灵活性高
  • 获取配置文件数据多时,需要些使用大量的@Value,不方便开发
@RestController
public class BookController {

    @Value("${lesson}")
    private String lesson;

    @Value("${server.port}")
    private Integer port;

    @Value("${enterprise.subject[0]}")
    private String subject_00;


    @RequestMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println(lesson);
        System.out.println(port);
        System.out.println(subject_00);
}

二、使用Environment类读取

使用org.springframework.core.env.Environment包下的Environment类读取
@RestController
public class BookController {


    @Autowired
    private Environment environment;


    @RequestMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println(environment.getProperty("lesson"));
        System.out.println(environment.getProperty("server.port"));
        System.out.println(environment.getProperty("enterprise.age"));
        System.out.println(environment.getProperty("enterprise.subject[1]"));
        return "hello,spring boot";
    }
}

定义Environment类型属性,用@Autowired注解自动注入,调用environment。getProperty方法

写入配置文件属性名字,就可以读取数据了

三、定义一个实体类

定义一个实体类,将它交给IOC容器管理,使用@ConfigurationProperties(prefix="name")注解关联配置文件中的属性。将要读取的属性在实体类中定义出来,生成Get和Set方法

@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
    private String name;
    private Integer age;
    private String tel;
    private String[] subject;

    @Override
    public String toString() {
        return "Enterprise{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", tel='" + tel + '\'' +
                ", subject=" + Arrays.toString(subject) +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String[] getSubject() {
        return subject;
    }

    public void setSubject(String[] subject) {
        this.subject = subject;
    }
}

在调用地方实例化类,注入对象,使用Get方法获取想要的属性 

@RestController
public class BookController {

    @Autowired
    private Enterprise enterprise;

    @RequestMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println(enterprise);
        return "hello,spring boot";
    }
}

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 提供了多种读取配置文件方式,以下是其中几种常用的方式: 1. application.properties/application.yml:在 src/main/resources 目录下创建 application.properties 或 application.yml 文件,可以在其中设置应用程序的配置信息,例如: ``` server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456 ``` 2. @Value 注解:在代码中使用 @Value 注解读取配置信息,例如: ``` @Value("${server.port}") private int serverPort; @Value("${spring.datasource.url}") private String dataSourceUrl; @Value("${spring.datasource.username}") private String dataSourceUsername; @Value("${spring.datasource.password}") private String dataSourcePassword; ``` 3. @ConfigurationProperties 注解:通过 @ConfigurationProperties 注解将配置文件中的属性值注入到 Bean 中,例如: ``` @ConfigurationProperties(prefix = "spring.datasource") public class DataSourceProperties { private String url; private String username; private String password; // getter/setter } ``` 4. Environment 接口:通过 Environment 接口读取配置信息,例如: ``` @Autowired private Environment env; int serverPort = env.getProperty("server.port", Integer.class); String dataSourceUrl = env.getProperty("spring.datasource.url"); String dataSourceUsername = env.getProperty("spring.datasource.username"); String dataSourcePassword = env.getProperty("spring.datasource.password"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值