2009-08-19 18 views
8

czy można zdefiniować w pliku kontekstowym sprężyny i jedną lub więcej właściwości, które można uzyskać w elementach> fasoli <.globalne właściwości na wiosnę

Poniższy przykład ilustruje najlepiej, czego potrzebuję - Chcę, aby zdefiniować FOO nieruchomości raz, a następnie odwoływać się do niej wielokrotnie w moich różnych < fasoli> Definicje:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 
    <properties> 
    <property name="FOO" value="BAR"> 
    </properties> 

    <bean name="TEST" class="mytest"> 
    <property name="MYFOO" value="${FOO}"/> 
    </bean> 
    <bean name="TEST1" class="mytest1"> 
    <property name="MYFOO" value="${FOO}"/> 
    </bean> 

</beans> 

Każde wejście byłoby bardzo mile widziane.
Dzięki, Kevin.

Odpowiedz

9

Możesz to zrobić, używając wymyślnie nazwanego PropertyPlaceHolderConfigurer. Zobacz here na przykład w dokumentacji wiosennej. Nie definiujesz wartości właściwości w pliku fasoli sprężystej, eksternalizujesz je w pliku .properties.

Można, jak podejrzewam, użyć PropertyPlaceHolderConfigurer lub jednego z jego rodzeństwa, aby wprowadzić obiekt Properties zdefiniowany w pliku Spring, ale byłoby to raczej bardziej szczegółowe rozwiązanie.

4

Jeśli potrzebujesz tylko zdefiniować je w swoim pliku xml i nigdy ich nie zmieniać (jak byś zmienił opcję konfiguracji, powiedzmy port lub ip), możesz utworzyć komponent bean klasy String z daną właściwością, a następnie pisać . Tworzenie fasoli klasy String nie jest najbardziej prostą sprawą, ale jest wykonalne.

Jeśli chcesz coś bardziej skomplikowanego (np. Chcesz, aby plik konfiguracyjny znajdował się poza słojem, w którym znajduje się twój xml z definicją fasoli), możesz spojrzeć na klasę PropertyPlaceholderConfigurer.

3

Wystarczy znaleźć sposób, aby to wszystko zrobić w pliku wiosna XML bez pliku właściwości zewnętrzne potrzebne (choć można uzupełnić z jednym razie potrzeby)

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="properties"> 
     <util:properties> 
      <prop key="foo1">bar1</prop> 
      <prop key="foo2">bar2</prop> 
     </util:properties> 
    </property> 
</bean> 

następnie odwołać je tak samo jak normalne jak ${foo1} gdzie potrzebne

+0

Nie wierzę, że ta rzeczywistość działa. [dokumentacja] (http://docs.spring.io/spring/docs/2.0.8/reference/xsd-config.html) sugeruje, że jest to skrót dla umieszczania lokalizacji plików właściwości. –

Powiązane problemy