@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 中的配置信息。