@ConfigurationProperties
是 Spring Boot 提供的一个注解,它可以将配置文件中的属性值与 Java 对象进行绑定,方便开发人员使用。
在 Spring Boot 中,我们可以通过 application.properties
或者 application.yml
管理应用程序的配置属性。例如,我们可以在 application.properties
中定义一个名为 myconfig.name
的属性:
myconfig.name=bj
当应用程序需要获取这个属性时,通常会使用@Value注解来注入
@RestController
public class MyController {
@Value("${myconfig.name}")
private String name;
// ...
}
但是,如果应用程序需要管理大量的配置属性,使用@Value注解就显得非常繁琐和冗长,就可以使用@ConfigurationProperties
注解将这些属性统一管理,例如:
@Configuration
@ConfigurationProperties(prefix = "myconfig")//prefix指定配置文件中xml文件的前一个头
public class MyConfig {
private String name;
// getter 和 setter 省略
@Override
public String toString() {
return "MyConfig [name=" + name + "]";
}
}
上述代码中,@Configuration注解将Myconfig类为配置类,并使用@ConfigurationProperties(prefix = "myconfig")
指定了要绑定的属性前缀为 myconfig
,这就意味着在application.properties中的属性名需要以myconfig开头。之后,Spring boot会自动将配置文件中以myconfig开头的属性绑定到Myconfig对象的对应字段上;例如myconfig.name的属性值“bj”就会被绑定到Myconfig对象的name字段上。
这样,在应用程序中需要使用这个属性时,就可以直接注入Myconfig对象了:
@RestController
public class MyController {
@Autowired
private MyConfig myconfig;
@GetMapping("/name")
public String getName() {
return myconfig.getName();
}
}