Lassen Sie uns sagen, ich habe zwei Module. Einer ist Kern und ein anderer ist ein kernabhängiges Implementierungsmodul. Core ist eine JAR-Datei für diesen abhängigen Implementierungsmodulkrieg.überschreiben Bean Konfiguration im Frühjahr
Im Kern habe ich eine Bohne wie
definiert<bean id="x" class="com.pokuri.X">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
Und diese Klasse hat eine Methode als
public class X{
public void doSomeJob(){
.......
}
}
dieses Verfahren folgt, wird von einigen Kernklassen genannt zu werden. Jetzt muss ich die Logik in der Methode doSomeJob() von X entsprechend meiner Kern-abhängigen Implementierung ändern. Also, ich erstelle eine Klasse wie diese
und definierte die Bean mit derselben ID in einem anderen Anwendungskontext XML-Datei wie folgt.
<bean id="x" class="com.pokuri.ExtX">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
und wir bauen Anwendungskontext mit contextConfigLocation
Kontextparameter in web.xml
Wert als classpath:springfolder
angeben.
Aber in der Kernlogik bekomme ich Core-Bean-Instanz nur (d. H. X
Instanz) nicht ExtX
. Wie können wir diese Bean-Definition überschreiben und das System mit der neuen Extend-Bean-Definition beginnen lassen?
Und ich habe gehört, dass mit der gleichen ID in verschiedenen Anwendung Kontextdateien überschreiben zuerst geladene Bean-Definition mit später geladenen Bean-Definition. Gibt es eine priority
Art von Attribut in der Bean-Definition, damit ApplicationContext die höchste Priorität verwendet, die eine niedrigere Priorität hat, wenn Beans mit derselben ID gefunden wurden.
versuchen Wird Ihr Ansatz – Pokuri
Natürlich funktioniert es. Aber ist es eine gute Praxis, eine Definition durch eine andere zu ersetzen? Ich denke, es ist eine Art Hack: / –