ฉันต้องการพิมพ์รายการคุณสมบัติรวมที่ตั้งไว้ในแอปพลิเคชันของเราเมื่อเริ่มต้นระบบ วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?
ขอบคุณ
ฉันต้องการพิมพ์รายการคุณสมบัติรวมที่ตั้งไว้ในแอปพลิเคชันของเราเมื่อเริ่มต้นระบบ วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?
ขอบคุณ
ใช้ ที่กำหนดเอง PropertyPlaceholderConfigurer
การใช้งานที่แทนที่วิธีการ resolve...
และบันทึกชื่อ placeholder
คุณอาจต้องการ/ต้องการแทนที่วิธีการ convert...
แต่ resolve...
ควรจัดการมัน
นี่คือการดำเนินการของฉัน:
public class CustomPropertySourcesPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer implements InitializingBean{
public void afterPropertiesSet(){
try{
Properties loadedProperties = this.mergeProperties();
for(Entry<Object, Object> singleProperty : loadedProperties.entrySet()){
logger.info("LoadedProperty: "+singleProperty.getKey()+"="+singleProperty.getValue());
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
นี่คือตัวอย่างที่ชัดเจนของการพิมพ์คุณสมบัติทั้งหมด:
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.web.context.support.StandardServletEnvironment;
public class PropertiesLoaderConfigurer
extends PropertySourcesPlaceholderConfigurer {
private static final String ENVIRONMENT_PROPERTIES = "environmentProperties";
@Override
public void postProcessBeanFactory(
final ConfigurableListableBeanFactory beanFactory)
throws BeansException {
super.postProcessBeanFactory(beanFactory);
final StandardServletEnvironment propertySources =
(StandardServletEnvironment) super.getAppliedPropertySources().get(ENVIRONMENT_PROPERTIES).getSource();
propertySources.getPropertySources().forEach(propertySource -> {
if (propertySource.getSource() instanceof Map) {
// it will print systemProperties, systemEnvironment, application.properties and other overrides of
// application.properties
System.out.println("#######" + propertySource.getName() + "#######");
final Map<String, String> properties = mapValueAsString((Map<String, Object>) propertySource.getSource());
System.out.println(properties);
}
});
}
private Map<String, String> mapValueAsString(
final Map<String, Object> map) {
return map.entrySet().stream()
.collect(Collectors.toMap(entry -> entry.getKey(), entry -> toString(entry.getValue())));
}
private String toString(
final Object object) {
return Optional.ofNullable(object).map(value -> value.toString()).orElse(null);
}
}