前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Springboot读取配置的10种方式

Springboot读取配置的10种方式

原创
作者头像
疯狂的KK
修改2023-03-28 18:07:39
9430
修改2023-03-28 18:07:39
举报
文章被收录于专栏:Java项目实战Java项目实战

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

  1. @Value 注解 使用 @Value 注解可以直接将配置文件中的值注入到对应的属性上,示例如下:
代码语言:txt
复制
@Value("${spring.datasource.url}")
private String url;

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

  1. @ConfigurationProperties 注解 使用 @ConfigurationProperties 注解可以将配置文件中的多个属性一次性注入到一个类中,示例如下:
代码语言:txt
复制
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties {
    private String url;
    private String username;
    private String password;
    // ...
}

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

  1. Environment 对象 使用 Environment 对象可以获取配置文件中的属性值,示例如下:
代码语言:txt
复制
@Autowired
private Environment env;
public void test() {
    String url = env.getProperty("spring.datasource.url");
}
  1. @PropertySource 注解 使用 @PropertySource 注解可以指定读取的配置文件,示例如下:
代码语言:txt
复制
@Configuration
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
    @Value("${jdbc.url}")
    private String url;
    // ...
}

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

  1. @ImportResource 注解 使用 @ImportResource 注解可以导入 XML 配置文件,示例如下:
代码语言:txt
复制
@Configuration
@ImportResource(locations = "classpath:applicationContext.xml")
public class XmlConfig {
}

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

  1. Spring Expression Language(SpEL) 使用 SpEL 可以在代码中直接使用配置文件中的属性值,示例如下:
代码语言:txt
复制
@Value("#{${spring.datasource}.url}")
private String url;

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

  1. PropertySourcesPlaceholderConfigurer 使用 PropertySourcesPlaceholderConfigurer 可以在 XML 配置文件中使用 SpEL,示例如下:
代码语言:txt
复制
<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 对象可以获取命令行参数,示例如下:
代码语言:txt
复制
@Component

public class MyBean implements CommandLineRunner {


    @Override


    public void run(ApplicationArguments args) throws Exception {


        String[] argArray = args.getSourceArgs();

    }

}
  1. 自定义配置文件 使用自定义配置文件可以按照自己的需求读取配置文件,示例如下:
代码语言:txt
复制
@Configuration
@PropertySource("classpath:my-config.properties")
public class MyConfig {
    @Value("${my.config.value}")
    private String myConfigValue;
    // ...
}

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

  1. 自定义属性编辑器 使用自定义属性编辑器可以将配置文件中的属性值转换成对应的类型,示例如下:
代码语言:txt
复制
public class MyPropertyEditor extends PropertyEditorSupport {

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

}

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

代码语言:txt
复制
@InitBinder

public void initBinder(WebDataBinder binder) {


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


}

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档