springboot开发日记(6)——@ConfigurationProperties注解:配置绑定

@ConfigurationProperties——配置绑定:将properties文件中的内容绑定到javabean中。

新建一个Car对象

public class Car {
    private String brand;
    private Integer price;
    //其余构造函数省略
    }

在resources目录下的application.properties中添加如下代码

mycar.brand=BYD
mycar.price=10000

注意:application.properties中不需要加分号


补充:springboot中@Component与@Bean的区别

1)@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean,@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。

2)@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑,并且实例名就是方法名。


第一种模式:@Component+@ConfigurationProperties

此时在application.properties文件中有对于Car对象的操作,可以通过@Component+@ConfigurationProperties将该文件中的数据绑定到组件中。prefix与value互为别名,二者任意选择一个即可。prefix的值代表在属性文件中哪一个前缀的全部属性与该类一一绑定。

@Component
@ConfigurationProperties(prefix = "mycar")

上述代码中prefix="mycar"代表application.properties属性文件中所有前缀为mycar的属性都要一一绑定。

注意:@ConfigurationProperties需要组件在容器中才能生效,上面的@Component使Car位于容器中。并且类中需要有setter方法,否则无法赋值。@Component有value属性可以指定bean的名字。


第二种模式:@EnableConfigurationProperties+@ConfigurationProperties

@EnableConfigurationProperties是在@Configuration注解下的配置文件使用的,作用是打开某个类的配置绑定功能并且自动注册到容器中。前者是在配置文件中使用,后者是在类中使用。

注意:@EnableConfigurationProperties与@Component二者使用一个即可,不能同时使用。

@EnableConfigurationProperties中只有一个value属性——指定需要开启配置绑定功能的类名,不能指定bean的名字,@EnableConfigurationProperties会自动注册组件到容器中,bean的名字是@ConfigurationProperties中的prefix属性的值+“-”+类的路径名。

如Car对象在容器中的bean名称为:mycar-com.main.bean.Car

在MyConfig.java中添加代码,同时将Car.java中的@Component注解注释掉。

@EnableConfigurationProperties(Car.class)

最后的效果与第一种模式一样。

应用场景:当我们使用第三方包创建对象的时候 ,可以不需要在他的源码中添加@Component而是直接在配置类中使用@EnableConfigurationProperties进行属性绑定。

posted @ 2023-02-08 10:44  YTARO  阅读(187)  评论(0)    收藏  举报