A typical application of spring loaded configurationproperties is auto-load (autowired), which requires manual modification of the loaded property properties in some special scenarios.
Code instance, config class
Importjava.util.ArrayList;Importjava.util.List;Importorg.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties (prefix= "Devices") Public classDeviceconfig {Privatelist<string> Imports =NewArraylist<string>(); Privatelist<devicedetailsproperties> definitions =NewArraylist<devicedetailsproperties>(); PublicList<string>Getimports () {return This. Imports; } PublicList<devicedetailsproperties>getdefinitions () {returndefinitions; } Public voidSetimports (list<string>imports) { This. Imports =imports; } Public voidSetdefinitions (list<devicedetailsproperties>definitions) { This. Definitions =definitions; }}
Deviceconfig class code used to Devicedetailsproperties, test demo only ID
Public class devicedetailsproperties { String id; Public String getId () { return ID; } Public void setId (String id) { this. ID= id; } @Override public String toString () { return ID; }}
Test code Class
Importjava.util.Properties;Importorg.springframework.boot.bind.PropertiesConfigurationFactory; Public classTest { Public Static voidMain (string[] args)throwsException {Properties props=NewProperties (); Props.put ("Devices.imports[0]", "IMP1"); Props.put ("Devices.imports[1]", "IMP2"); Props.put ("Devices.definitions[0].id", "first"); Props.put ("Devices.definitions[1].id", "second"); Deviceconfig conf=NewDeviceconfig (); Propertiesconfigurationfactory<DeviceConfig> PCF =NewPropertiesconfigurationfactory<deviceconfig>(conf); Pcf.setproperties (props); Pcf.settargetname ("Devices"); Conf=Pcf.getobject (); System.out.println (Conf.getimports ()); System.out.println (Conf.getdefinitions ()); }}
Operation Result:
Spring Manual binding Configurationproperties