0
点赞
收藏
分享

微信扫一扫

ConfigurationProperties注解详解

狐沐说 2023-10-21 阅读 47

@ConfigurationProperties和@Value注解用于获取配置文件中的属性定义并绑定到Java Bean或属性中

一个简单的例子
@ConfigurationProperties需要和@Configuration配合使用,我们通常在一个POJO里面进行配置:

@Data
@Configuration
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {

    private String hostName;
    private int port;
    private String from;
}

@Data
@Configuration
@ConfigurationProperties(prefix = “mail”)
public class ConfigProperties {

private String hostName;
private int port;
private String from;

}

#Simple properties
mail.hostname=host@mail.com
mail.port=9000
mail.from=mailer@mail.com

Spring的属性名字匹配支持很多格式,如下所示所有的格式都可以和hostName进行匹配:

mail.hostName
mail.hostname
mail.host_name
mail.host-name
mail.HOST_NAME

如果你不想使用@Configuration,,可以有以下选择

//指定单个类,其中绑定bean注入到spring容器
//启用ConfigurationProperties.属性是类的名字
//@EnableAutoConfiguration({NestAppBean.class})

//直接扫描多个包 ,其中绑定bean注入到spring容器
//也是启用ConfigurationProperties.属性是类的 名字

==========================================================
如果你不想使用@Configuration, 那么需要在@EnableConfigurationProperties注解中手动导入配置文件如下:

@SpringBootApplication
@EnableConfigurationProperties(ConfigProperties.class)
public class ConfigPropApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigPropApp.class,args);
    }
}

我们也可以在@ConfigurationPropertiesScan中指定Config文件的路径:

@SpringBootApplication
@ConfigurationPropertiesScan("com.flydean.config")
public class ConfigPropApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigPropApp.class,args);
    }
}

这样的话程序只会在com.flydean.config包中查找config文件。

举报

相关推荐

0 条评论