2017-05-10 1 views
0

A.javaWarum injiziere ich die gleiche Bohne, aber tatsächlich injizierte verschiedene Klasse?

@Controller 
@RequestMapping(value = "/a") 
public class A { 
    @Resource(name = "foo") 
    private Foo foo; 
} 

B.java

@Controller 
@RequestMapping(value = "/b") 
public class B { 
    @Resource(name = "foo") 
    private Foo foo; 
} 

x-spring.xml

<alias name="foo1" alias="foo"/> 
<bean id="foo1" class="com.example.Foo1" scope="tenant"> 

y-spring.xml

<alias name="Foo2" alias="foo"/> 
<bean id="foo2" class="com.example.Foo2" scope="tenant"> 

Foo1 abgeleitet von Foo2. Projekt mit Hybris, Scope ist Mandant (definiert von Hybris).

Wie oben, I injizieren "foo" in Klasse A undKlasse B und x-spring.xml,y-spring.xml nacheinander geladen. Aber ich fand, injizierte die Bohne unterschiedlich ist, ist es Foo1 in Klasse A, und es ist foo2 in Klasse B, frage ich mich, warum sie anders sind, und wie sie zu Foo1 auszurichten.

+0

Alias ​​ersetzt? – StanislavL

Antwort

1

Meine Vermutung ist, dass x-spring.xml und y-spring.xml in zwei verschiedenen Kontexten sind, wahrscheinlich zwei getrennte Webkontexte von zwei verschiedenen Erweiterungen.

Wenn Sie möchten, dass sie in beiden Kontexten verfügbar sind, deklarieren Sie die Bean im Kernanwendungskontext einmal.

Tenant Umfang ist veraltet, verwenden Sie Feder Kontexten oder yrequest

Verwandte Themen