当前位置: 代码迷 >> 综合 >> @ConfigurationProperties批量读取配置文件信息
  详细解决方案

@ConfigurationProperties批量读取配置文件信息

热度:60   发布时间:2023-09-29 07:41:05.0
@ConfigurationProperties主要是一个读取配置文件信息的注解,可以按照配置的前缀信息读取对应的配置信息。可以作用于类和方法上。

注解用于方法

      @ConfigurationProperties注解在类上时需要和@Configuration以及@Bean同时使用。

     在application.properties中写入以下信息

test.properties.name=1111
test.properties.age=12
test.properties.note=gwgasfsdfa
test.properties.location-info=vsgfrqwfw

      新建实体类属性名称和application.properties中配置信息的除前缀外的信息一致。例如配置test.properties.name,则属性是name。driver-class-name”这种带横杠的情况,在POJO里面的命名规则是 下划线转驼峰 就可以绑定成功,所以就是“driverClassName”。

@Data
@ToString
public class MyConfigurationProperties {String name;int age;String note;/*** 驼峰命名* driver-class-name”这种带横杠的情况,在POJO里面的命名规则是 下划线转驼峰 就可以绑定成功,所以就是“driverClassName”*/String locationInfo;
}
@Configuration
public class PropertiesConfiguration {@Bean("myConfigurationProperties")@ConfigurationProperties(prefix = "test.properties")public MyConfigurationProperties myConfigurationProperties(){return new MyConfigurationProperties();}
}

这样就可以在其他类中使用以下注解获取MyConfigurationProperties类的信息。

@Autowired
MyConfigurationProperties myConfigurationProperties;

 

注解用于类

注解用于类时,只需要保证类的属性和配置文件中的信息是相同即可。

@Data
@ToString
@Component
@ConfigurationProperties(prefix = "test.properties")
public class MyConfigurationProperties {String name;int age;String note;/*** 驼峰命名* driver-class-name”这种带横杠的情况,在POJO里面的命名规则是 下划线转驼峰 就可以绑定成功,所以就是“driverClassName”*/String locationInfo;
}

这样就可以在其他类中使用以下注解获取MyConfigurationProperties类的信息。

@Autowired
MyConfigurationProperties myConfigurationProperties;

补充

        有时候我们需要读取的配置信息不是在applicaion。properties中,而是在自定义的properties文件中。这是我只需要在对应的类上加入@PropertySource()注解来制定注入的配置文件名称。value值的形式是"classpath:/com/myco/app.properties" 或者 "file:/path/to/file.xml"。例如 @PropertySource("classpath:test.properties") 表示加载的是 resource/test.properties 中的配置信息。