Nasz projekt ma dwa konteksty aplikacji:

  • Aplikacja-kontekst.xml.
  • Aplikacja-kontekst-test.xml

Obecnie każdy plik ma zduplikowane definicje ziaren. Na przykład następujący ziarno będzie znajdować się w każdym kontekście aplikacji:

<bean id="foo "class="com.foo">
     <property name="bar">
          <ref local="bar"/>
     </property>
</bean>

Plan jest taki, aby utworzyć kolejny plik dla definicji ziaren, abyśmy mogli ponownie wykorzystać ziarna, jednak jeśli umieścimy powyższy segment xml w jego własnym pliku, nie będzie odniesienia do bar

Czy jest łatwy sposób na rozwiązanie tego?

Pamiętaj, że bar będzie inny w każdym kontekście aplikacji.

Dzięki!

1
Shawn 9 marzec 2012, 00:27

2 odpowiedzi

Najlepsza odpowiedź

<ref local="bar"/> ma określone znaczenie - oznacza, że ​​bar musi być zdefiniowany w tym samym pliku. W twoim przypadku jest to zbyt surowe, więc poluzuj trochę:

<bean id="foo "class="com.foo">
     <property name="bar" ref="bar"/>
</bean>

A następnie użyj <import resource="...">, aby zaimportować ten plik w razie potrzeby.

Dzięki temu bar nadal musi istnieć, ale może znajdować się w dowolnym pliku będącym częścią kontekstu lub w dowolnym kontekście nadrzędnym.

3
skaffman 9 marzec 2012, 00:31

Oczywiście, użyj wspólnego pliku kontekstowego, który importujesz do obu plików xml.

<import resource="/common"/>

Zobacz 4.2. 2.1. Komponowanie metadanych konfiguracji opartych na XML

1
Sean Patrick Floyd 9 marzec 2012, 00:32