Springboot读取配置的10种方式

简介: Spring Boot 读取配置文件的方式有很多,下面介绍 10 种常用方式以及相应的示例和解析。

Spring Boot 读取配置文件的方式有很多,下面介绍 10 种常用方式以及相应的示例和解析。

  1. @Value 注解

使用 @Value 注解可以直接将配置文件中的值注入到对应的属性上,示例如下:

@Value("${spring.datasource.url}")
private String url;

这里的 ${spring.datasource.url} 是从 application.yml 或 application.properties 文件中读取的,使用此注解需要在类上添加 @Component 注解。

  1. @ConfigurationProperties 注解

使用 @ConfigurationProperties 注解可以将配置文件中的多个属性一次性注入到一个类中,示例如下:

@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties {
    private String url;
    private String username;
    private String password;
    // ...
}

这里的 prefix 为配置文件中的前缀,需要在类上添加 @Component 注解。

  1. Environment 对象

使用 Environment 对象可以获取配置文件中的属性值,示例如下:

@Autowired
private Environment env;
public void test() {
    String url = env.getProperty("spring.datasource.url");
}
  1. @PropertySource 注解

使用 @PropertySource 注解可以指定读取的配置文件,示例如下:

@Configuration
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
    @Value("${jdbc.url}")
    private String url;
    // ...
}

这里的 classpath:jdbc.properties 是指定了要读取的配置文件,需要在类上添加 @Configuration 注解。

  1. @ImportResource 注解

使用 @ImportResource 注解可以导入 XML 配置文件,示例如下:

@Configuration
@ImportResource(locations = "classpath:applicationContext.xml")
public class XmlConfig {
}

这里的 classpath:applicationContext.xml 是指定了要导入的 XML 配置文件,需要在类上添加 @Configuration 注解。

  1. Spring Expression Language(SpEL)

使用 SpEL 可以在代码中直接使用配置文件中的属性值,示例如下:

@Value("#{${spring.datasource}.url}")
private String url;

这里的 ${spring.datasource}.url 是指定了要读取的属性值,需要在类上添加 @Component 注解。

  1. PropertySourcesPlaceholderConfigurer

使用 PropertySourcesPlaceholderConfigurer 可以在 XML 配置文件中使用 SpEL,示例如下:

<bean class="org.springframework.beans.factory.config.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:jdbc.properties</value>
        </list>
    </property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

这里的 classpath:jdbc.properties 是指定了要读取的配置文件。

  1. ApplicationArguments 对象

使用 ApplicationArguments 对象可以获取命令行参数,示例如下:

@Component

public class MyBean implements CommandLineRunner {


    @Override


    public void run(ApplicationArguments args) throws Exception {


        String[] argArray = args.getSourceArgs();

    }

}
  1. 自定义配置文件

使用自定义配置文件可以按照自己的需求读取配置文件,示例如下:

@Configuration
@PropertySource("classpath:my-config.properties")
public class MyConfig {
    @Value("${my.config.value}")
    private String myConfigValue;
    // ...
}

这里的 classpath:my-config.properties 是指定了要读取的配置文件,需要在类上添加 @Configuration 注解。

  1. 自定义属性编辑器

使用自定义属性编辑器可以将配置文件中的属性值转换成对应的类型,示例如下:

public class MyPropertyEditor extends PropertyEditorSupport {

        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            setValue(text == null ? null : new MyConfig(text));
        }

}

这里的 MyConfig 是自定义的类型,需要在使用处指定使用此编辑器:

@InitBinder

public void initBinder(WebDataBinder binder) {


binder.registerCustomEditor(MyConfig.class, new MyPropertyEditor());


}

以上就是 Spring Boot 读取配置文件的 10 种方式以及相应的示例和解析,根据实际需要选择合适的方式即可。

目录
相关文章
|
3月前
|
Java 数据格式
SpringBoot 读取 yml 配置的几种方式
SpringBoot 读取 yml 配置的几种方式
215 0
|
4月前
|
Java
springboot 读取配置信息和对应bean
springboot 读取配置信息和对应bean
|
5月前
|
Java
SpringBoot读取配置文件内容,获取数据
SpringBoot读取配置文件内容,获取数据
|
6月前
|
运维 Java Spring
Springboot配置文件读取
Springboot配置文件读取
|
Java 数据格式 容器
如何读懂 SpringBoot 配置文件
如何读懂 SpringBoot 配置文件
84 0
|
6月前
|
缓存 NoSQL Java
SpringBoot - Spring缓存默认配置与运行流程
SpringBoot - Spring缓存默认配置与运行流程
62 1
|
存储 搜索推荐 Java
6 种方式读取 Springboot 的配置(原理+实战)
从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,但就是这么常用的功能,仍然有很多开发者在这个方面踩坑。 我整理了几种获取配置属性的方式,目的不仅是要让大家学会如何使用,更重要的是弄清配置加载、读取的底层原理,一旦出现问题可以分析出其症结所在,而不是一报错取不到属性,无头苍蝇般的重启项目,在句句卧槽中逐渐抓狂~
637 0
|
Java Spring
Springboot读取配置
Springboot读取配置
86 0
|
存储 Java 开发者
读取 Springboot 的配置
读取 Springboot 的配置方式
71 0
|
Java
springboot读取yml配置文件的三种方式
springboot读取yml配置文件的三种方式
179 0