2016-04-01 27 views
0

${...}-notasının diğer özelliklere referanslar içerdiği sürece çalıştığını anlıyorum. Bununla birlikte, bu ayrıştırma algoritmasını genişletmek istiyorum.PropertySourcesPlaceholderConfigurer Özel Değeri Ayrıştırıcıyla

İşte özellikleri dosya var:

connection.http.connectTimeout=15000 
#connection.http.readTimeout=${connection.http.connectTimeout} 
connection.http.readTimeout=%{30*1000} 

ikinci satır hala çalışmak ve 15000 readTimeout ayarlarsınız ama satır 3 iş yapmak istiyoruz. Önek ve kullandığım postfixin ne işe yaradığını söylememem gerekiyor, yukarıdaki örnekte %{...} kullanılıyor, ancak her ne işe yarayan olursa olsun benimle sorun yok. ${...} zaten gerekli tüm ayrıştırma mevcut olduğu gibi daha iyi bir seçim olabilir, ama sonra benim yeni algoritma her zamanki Spring-stuff önce içeri atmak zorunda. İşte

Ben bugüne kadar ne var:
@Configuration 
public class BaseAppConfig { 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer properties(Environment environment) throws IOException { 
    String env = getEnvProperty(environment); 
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); 
    configurer.setLocations(getPropertiesFiles(env)); 
    configurer.setIgnoreResourceNotFound(true); 
    return configurer; 
    } 

Ben PropertySourcesPlaceholderConfigurer meraklısı çalıştı, ancak convertPropertyValue() asla denir: Ben Bahar işini yapar nasıl içine bakmak çalıştı

PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer() { 

     @Override 
     protected String convertPropertyValue(String originalValue) { 
     System.out.println("Parse " + originalValue); 
     return super.convertPropertyValue(originalValue); 
     } 

    }; 

ve öyle görünüyor s ile çalışır. Ancak, nasıl bir tane örgüleyebileceğimi göremiyorum.

Peki bunu nasıl çözebilirim?

cevap

0

Spring's RandomValuePropertySource'un tam olarak istediğim şekilde çalıştığını bildiğim zaman oldukça kolay. Birkaç dakika içinde

Sonra

connection.connectTimeout=${duration:15s} 

kayıp halka gibi bir fantezi süresi yapılandırmasını kod başardı geçerli:

@Bean 
    public static PropertySourcesPlaceholderConfigurer properties(Environment environment) throws IOException { 
    AbstractEnvironment standardEnvironment = ((AbstractEnvironment) environment); 
    MutablePropertySources propertySources = standardEnvironment.getPropertySources(); 
    propertySources.addLast(new DurationValuePropertySource()); 
    }