springboot - 配置文件说明

本文详细介绍了SpringBoot中的配置方式,包括基于Java的配置、使用@Configuration类、@Import及@ComponentScan注解的运用。此外,还讲解了自动配置的实现方法,如何通过@EnableAutoConfiguration启用或排除特定配置,并提供了配置文件加载方式以及使用@ConfigurationProperties进行第三方组件配置的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot提倡基于Java的配置。尽管你可以使用XML源调用SpringApplication.run(),不过还是建议你使用@Configuration类作为主要配置源。

你不需要将所有的@Configuration放进一个单独的类,@Import注解可以用来导入其他配置类。或者使用@ComponentScan注解。

可以使用 @ImportResource注解加载XML配置文件。

 

实现自动配置有两种可选方式,分别是将@EnableAutoConfiguration或@SpringBootApplication注解到@Configuration类上。通常只需加在main方法上。

 

如果发现启用了不想要的自动配置项,你可以使用@EnableAutoConfiguration注解的exclude属性禁用它们。如:

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

 

@SpringBootApplication注解等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan

public class Application {



    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

    }



}

 

除了使用application.properties作为配置文件名,如果想要指定其他外部配置文件,可以根据spring.config.name和spring.config.location决定加载哪个文件,但是它们必须定义为environment属性(通常为OS env,系统属性或命令行参数)。

如果使用环境变量而不是系统属性,需要注意多数操作系统的key名称不允许以句号分割(period-separated),但你可以使用下划线(underscores)代替(比如,使用SPRING_CONFIG_NAME代替spring.config.name)。

如果应用运行在容器中,那么JNDI属性(java:comp/env)或servlet上下文初始化参数可以用来代替环境变量或系统属性,当然也可以使用环境变量或系统属性。

 

@ConfigurationProperties 用于第三方组件的配置。其中使用此注解有宽松绑定。包括虚线分割(比如,context-path绑定到contextPath),将environment属性转为大写字母(比如,PORT绑定port)。形如:

@ConfigurationProperties(prefix="person")

public class OwnerProperties {



    private String firstName;



    public String getFirstName() {

        return this.firstName;

    }



    public void setFirstName(String firstName) {

        this.firstName = firstName;

    }



}

以下属性名都能使用

属性

说明

person.firstName

标准驼峰规则

person.first-name

虚线表示,推荐用于.properties和.yml文件中

person.first_name

下划线表示,用于.properties和.yml文件的可选格式

PERSON_FIRST_NAME

大写形式,使用系统环境变量时推荐

如果你为自己的组件定义了一系列的配置keys,我们建议你将它们以@ConfigurationProperties注解的POJO进行分组。由于@Value不支持relaxed绑定,所以如果你使用环境变量提供属性值的话,它就不是很好的选择。

转载于:https://my.oschina.net/lemos/blog/831614

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值