SORU
26 Temmuz 2010, PAZARTESİ


Bahar Yapılandırma Dosyası İle Sistem Ayarlama Özelliği

Yapılandırma:
2.5, 4, Log4j Junit Bahar
Log4j dosya konumu bir sistem özelliğinden belirtildi

${log.location}

Çalışma zamanında, sistem özelliği-D java seçeneği ayarlayın. Her şey yolunda.

İhtiyacım Olan Şey Sorun /:
Birim test bir zamanda, sistem özelliği çözülmüş değil ayarlayın ve dosya konumu.
App Yay kullanır, sadece Bahar yapılandırmak istiyorayarlayınsistem özelliği.

Daha Fazla Bilgi:
Gereği yapılandırma için. Yeni bir Java kod tanıtmak olabilir mi, ya da IDE içine girdiler. İdeal olarak, Bahar özellik yapılandırma uygulamalarından biri sadece doğru kombinasyonu bulmak mümkün olmamıştır bu ele verebilir.

Bu fikir bulunur, ama Java kodu eklemek gerekir:
Spring SystemPropertyInitializingBean

Orada herhangi bir yardım? Herhangi bir fikir takdir edilmektedir.

CEVAP
27 Temmuz 2010, Salı


İki MethodInvokingFactoryBeans kombinasyonu ile bunu başarabilirsiniz

Sistem erişen bir iç fasulye oluşturun.getProperties ve özellikleri iç bean ile edindikleri putAll çağıran bir dış bean:

<bean
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property
        name="targetObject">
        <!-- System.getProperties() -->
        <bean
            class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetClass" value="java.lang.System" />
            <property name="targetMethod" value="getProperties" />
        </bean>
    </property>
    <property
        name="targetMethod"
        value="putAll" />
    <property
        name="arguments">
        <!-- The new Properties -->
        <util:properties>
            <prop
                key="my.key">myvalue</prop>
            <prop
                key="my.key2">myvalue2</prop>
            <prop
                key="my.key3">myvalue3</prop>

        </util:properties>
    </property>
</bean>

(Tabii ki sadece bir fasulye ve hedef Sistemi kullanabilirsiniz.() setProperties, ama sonra iyi bir fikir değil, varolan özelliklerini değiştirmek olur.

Her neyse, burada benim test yöntemi:

public static void main(final String[] args) {

    new ClassPathXmlApplicationContext("classpath:beans.xml");

    System.out.println("my.key: " System.getProperty("my.key"));
    System.out.println("my.key2: " System.getProperty("my.key2"));
    System.out.println("my.key3: " System.getProperty("my.key3"));

    // to test that we're not overwriting existing properties
    System.out.println("java.io.tmpdir: " System.getProperty("java.io.tmpdir"));
}

Ve burada çıktı

my.key: myvalue
my.key2: myvalue2
my.key3: myvalue3
java.io.tmpdir: C:\DOKUME~1\SEANFL~1\LOKALE~1\Temp\

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • Plugable

    Plugable

    19 Mayıs 2010
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005