2013-07-05 21 views
20

Używam biblioteki zewnętrznej wymagającej skonfigurowania jej przy użyciu definicji klastra XML; w definicji fasoli muszę zapewnić zewnętrzną klasę z fasolą z mojego projektu. Używam adnotacji sprężynowych ze skanowaniem komponentów.Odwołanie przypisanego komponentu sprężystego w definicji klastra XML

Jak odnieść się do mojej opisanej fasoli w definicji fasoli XML?

Czy są jakieś alternatywy dla tworzenia definicji fasoli XML?

Szczegóły: Wiosna 3.0.7

Odpowiedz

31

Bez względu na to, jak został stworzony (oparte na XML- lub annotation- metadanych), każdy fasola kończy się w kontekście aplikacji pod unikalną nazwą.

Jeśli właśnie opisałeś swoją klasę przy pomocy @Component lub pochodnych, bez podania jakiejkolwiek nazwy, zastosowany zostanie domyślny schemat nazewnictwa, a nazwa fasoli będzie nazwą Twojej klasy z pierwszym znakiem o małej nazwie: ClassName => "className".

Mając to na uwadze, jeśli trzeba wstrzyknąć fasoli że w definicji XML fasoli, zrobisz to tak jak z każdym innym fasoli w swoim kontekście:

<bean id="someBean" class="SomeClass"> 
    <property name="someProp" ref="className"/><!-- to stick to the above example --> 
</bean> 

Skoro jesteś mieszanie adnotacje z XML, kontekst aplikacji będzie w stanie prawidłowo zlokalizować komponent "className".

6

Adnotacja @Service przyjmuje opcjonalną wartość ciągu, która może być użyta do nadania fasoli nazwy wybranej przez użytkownika. Na przykład, jeżeli twój zwyczaj fasola wygląda następująco:

@Service("mySpecialName") 
public class MyClass { ... } 

Wtedy twój XML może mieć:

<bean class="com.someone.else.library.SomeClass"> 
    <property name="someProp" ref="mySpecialName"/> 
</bean> 
0

Pamiętaj, aby dodać poniżej kodu w pliku xml

<context:component-scan base-package="" /> 
<context:annotation-config /> 
+0

@Mike on już wspomniano używa bean adnotacji. –