SpringBoot读取配置数据的几种方式

SpringBoot读取配置数据的几种方式

方式一: 我们通过@Value("${spring.datasource.url}")这样的方式读取PropertyPlaceholderConfigurer.properties配置数据集合,本种方式是可以适应各种应用场景,推荐使用本方式读取配置文件

@Component
public class DbConfig {
 
    @Value("${spring.datasource.database}")
    private String database;
    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.password}")
    private String password;
    @Value("${spring.datasource.driverClassName}")
    private String driverClassName;
 
    public String getDatabase() {
        return database;
    }
 
    public void setDatabase(String database) {
        this.database = database;
    }
 
    public String getUrl() {
        return url;
    }
 
    public void setUrl(String url) {
        this.url = url;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public String getDriverClassName() {
        return driverClassName;
    }
 
    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

 
}

方式二: 这种写法系统会依据prefix前缀自动注入配置数据到数据实体变量,这种方式不错,但是存在缺陷,我们编写的PropertyPlaceholderConfigurer扩展字段会无效,所以如果只是单纯的读取配置而不需要额外操作时可使用这方式最简单

@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class DbConfig {
 
    private String database;
    private String url;
    private String username;
    private String password;
    private String driverClassName;
   
 
    public String getDatabase() {
        return database;
    }
 
    public void setDatabase(String database) {
        this.database = database;
    }
 
    public String getUrl() {
        return url;
    }
 
    public void setUrl(String url) {
        this.url = url;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public String getDriverClassName() {
        return driverClassName;
    }
 
    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }
 
}

方式三: 我们可以直接注入Environment对象示例并读取properties对象属性,与方式一的本质差不多,我们不需要编写对应字段的模型对象,但是对于程序可阅读性不好友,复用率不高

@Component
public class DbConfig {
 
    @Autowired
    private Environment environment;
 
    public String getDatabase() {
        return environment.getProperty("spring.datasource.database");
    }
 
}

方式四: 通过系统启动时候初始化Listener,使用PropertiesLoaderUtils工具类读取指定配置文件并获得Properties配置对象,我们可以随时随地使用该对象的属性,这种方式比较少用,针对比较自定义的配置数据可使用该方式

public class PropertiesListener implements ApplicationListener<ApplicationStartedEvent> {
 
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        try {
            Properties properties = PropertiesLoaderUtils.loadAllProperties("classpath:application.properties");
            System.out.println(properties);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
}

针对以上四种配置数据加载方式的比较与实际应用,我们在生产中最为常用的是第一种方式,但是最终怎么选用可根据你的实际项目配置加载方式而定

### 回答1: Spring Boot 支持多种方式读取配置文件,常见的有以下几种: 1. application.properties / application.yml : 默认位于项目的 classpath 下,可以通过 @Value 注解获取配置的值。 2. 命令行参数: 通过 java -jar xxx.jar --key=value 的方式传入。 3. 外部配置文件: 通过 spring.config.name 和 spring.config.location 配置,指定配置文件的名称和路径。 4. 环境变量: 通过系统环境变量配置配置项为 SPRING_APPLICATION_JSON。 以上四种方式的优先级依次降低,后面的会覆盖前面的配置。 ### 回答2: Spring Boot对于配置文件的读取非常灵活,支持多种格式的配置文件,例如:Properties文件、YAML文件等。在Spring Boot中,可以通过以下几种方式读取配置文件: 1. 使用@SpringBootApplication注解,在主类上加入该注解后,Spring Boot会自动扫描主类所在包及子包中的application.properties或application.yml文件,并将其中的配置项加载到Spring容器中。 2. 通过@ConfigurationProperties注解,将配置文件的属性注入到Bean中,在类上使用@ConfigurationProperties注解,并指定prefix,然后在Bean中通过属性进行获取。 3. 通过@Value注解,直接将配置文件中的值注入到Bean的属性中,在类中使用@Value注解,并指定${key}的方式获取配置文件中的值。 4. 使用Spring Environment API,通过Environment接口获取配置文件中的值,例如使用environment.getProperty(“key”)方法获取配置文件中的值。 5. 使用Spring Boot的外部化配置特性,可以通过命令行参数、操作系统环境变量、JNDI等方式设置配置文件中的属性的值。 以上就是Spring Boot读取配置文件的几种方式,具体使用方式需要根据项目的实际需求进行选择和配置。在实际项目中,一般会结合多种方式配合使用,以达到灵活和高效的配置效果。 ### 回答3: Spring Boot是一种基于Spring Framework的轻量级应用程序开发框架,它采用了约定大于配置方式,可以快速地开发和构建出高效、可扩展、可靠的Java应用程序。在Spring Boot开发中,读取配置文件是非常重要的一个环节,Spring Boot提供了多种方式读取配置文件,这里介绍其中的三种常见方式。 1. application.properties/application.yml 这是Spring Boot最常用的一种读取配置文件的方式。在Spring Boot的默认配置中,可以同时使用两种文件格式来定义配置信息,分别是application.properties和application.yml。这两种文件格式可以包含相同的设置信息,并且可以混合使用。 application.properties是一种基于键值对的配置文件格式,通过在文件中指定“键=值”的方式来定义配置信息。例如: server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 application.yml是一种基于缩进的配置文件格式,通过缩进和冒号的方式来定义配置信息。例如: server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: 123456 2. @ConfigurationProperties注解 @ConfigurationProperties注解是一种基于JavaBean的配置方式,可以将配置信息自动绑定到JavaBean的属性中,从而轻松地管理和配置整个应用程序的配置信息。例如: @Configuration @ConfigurationProperties(prefix = "spring.datasource") public class DataSourceProperties { private String url; private String username; private String password; // 省略getter和setter方法 } 通过将@ConfigurationProperties注解和prefix属性与JavaBean关联起来,可以自动将application.properties或application.yml文件中以spring.datasource作为前缀的所有配置信息绑定到DataSourceProperties类的对应属性中。 3. @Value注解 @Value注解是一种直接将配置信息注入到Java类中的方式。例如: @Service public class UserServiceImpl implements UserService { @Value("${server.port}") private int serverPort; // 省略其他内容 } 通过@Value注解,可以直接将application.properties或application.yml文件中的server.port配置信息注入到serverPort变量中。 总之,Spring Boot提供了多种灵活且方便的方式读取配置文件,我们可以根据实际应用场景和需求选择相应的方式来管理和配置应用程序的配置信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值