Spring Boot中ConfigurationProperties注解的详解说明

  • Post author:
  • Post category:其他


转自:


Spring Boot中ConfigurationProperties注解的详解说明

下文笔者讲述Spring Boot中ConfigurationProperties注解的相关说明,如下所示:

我们都知道在Spring中,可以使用@Value对单个属性进行注入配置操作
 但是很多配置都具有一定的层级,那么此时Spring提供了一个基于层级配置的注解,如下所示

@ConfigurationProperties

 @ConfigurationProperties注解的功能:
      将properties属性和一个Bean及其属性关联
     从而实现类型安全配置

例:

@ConfigurationProperties加载properties文件内的配置 使用prefix属性指定配置文件中定义的properties配置的统一前缀

@ConfigurationProperties(prefix = "remote"})  
---Spring Boot1.5之前,使用以下配置指定properties文件的位置
@ConfigurationProperties(prefix = "remote",locations={"classpath:remote.properties"}) 

示例代码如下:
remote.address= www.java265.com
remote.port= 9090

 
@Component
@PropertySource({"classpath:remote.properties"})
@ConfigurationProperties(prefix = "remote")
public class RemoteConfig {
    
    private String address;
    private int port;
    // getter/stetter方法
}
对应RemoteConfig的Bean的使用:

@RestController
public class ConfigurationController {
    @Resource
    private RemoteConfig remoteConfig;
    @GetMapping
    public void getInfo() {
        System.out.println("地址:" + remoteConfig.getAddress());
        System.out.println("端口:" + remoteConfig.getPort());
    }
}

//测试
@SpringBootTest
@AutoConfigureMockMvc
class ConfigurationControllerTest {
    @Autowired
    private MockMvc mockMvc;
    @Test
    void getInfo() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/"));
    }
}

-----运行以上代码,将输出以下信息------
地址:www.java265.com
端口:9090

例:

@ConfigurationProperties注解应用于Bean方法上的示例分享

例:

@Configuration
public class MyConfig {
    @Bean
    @ConfigurationProperties(prefix = "user")
    public User user() {
        return new User();
    }
}



版权声明:本文为qq_25073223原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。