Spring Boot最常用的读取properties配置文件中数据的方法:

1、使用@Value注解读取

读取properties配置文件时,默认读取的是application.properties。

application.properties:

demo.name=datou
demo.age=12

java代码

@RestController
public class DemoController {
@Value("${demo.name}")
    private  String name;

    @Value("${demo.age}")
    private int age;

    @GetMapping(value = "v")
    public  String getName(){
        return "name:"+name+" ,"+"age:"+age;
    }
}

运行结果如下


图片.png

部分放到一个单独的类A中进行读取,然后在类B中调用,则要把类A增加@Component注解,并在类B中使用@Autowired自动装配类A,代码如下。
类A:

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Data
@Component
public class Datou {

    @Value("${datou.name}")
    private  String name;
    @Value("${datou.age}")
    private  Integer age;
}

类B

@RestController
public class DemoController {

   @Autowired
    Datou datou;

    @Autowired
    Environment environment;
    @GetMapping(value = "datou")
    public  String getDatou(){
        return "name:"+datou.getName()+","+"age:"+datou.getAge();
               ;
    }
}

运行结果如下:


图片.png

2、使用Environment读取

application.properties:

demo.sex=男
demo.city=北京

java代码

@RestController
public class DemoController {

@Autowired
    Datou datou;

    @Autowired
    Environment environment;
    @GetMapping(value = "datou")
    public  String getDatou(){
        return //"name:"+datou.getName()+","+"age:"+datou.getAge();
                "\n\n\n"+"sex"+environment.getProperty("demo.sex")+" "+"city:"+environment.getProperty("demo.city");
    }
}

运行结果如下


图片.png

3、使用@ConfigurationProperties注解读取

在实际项目中,当项目需要注入的变量值很多时,上述所述的两种方法工作量会变得比较大,这时候我们通常使用基于类型安全的配置方式,将properties属性和一个Bean关联在一起,即使用注解@ConfigurationProperties读取配置文件数据。

在src\main\resources下新建config.properties配置文件:

demo.phone=10086
demo.wife=self

创建ConfigBeanProp并注入config.properties中的值

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "demo")
@PropertySource(value ="config.properties")
public class ConfigBeanProp {

    private  String  phone;

    private  String wife;
}

@Component 表示将该类标识为Bean

@ConfigurationProperties(prefix = "demo")用于绑定属性,其中prefix表示所绑定的属性的前缀。

@PropertySource(value = "config.properties")表示配置文件路径。

使用时,先使用@Autowired自动装载ConfigBeanProp,然后再进行取值,示例如下:

@RestController
public class DemoController {

   @Autowired
    ConfigBeanProp configBeanProp;
    @GetMapping("way")
    public  String getWay(){
        return "phone:"+configBeanProp.getPhone()+","+configBeanProp.getWife();
    }
}

运行结果如下:

图片.png

参考:https://blog.csdn.net/dkbnull/article/details/81953190

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容