Für Threadsicherheitsproblem aufgetreten, konvertieren wir unsere Singleton-Bohnen als Prototyp. Aber in einem Szenario brauchen wir immer noch dasselbe Objekt (mit diesem Thread) für mehrere Kartenelemente. Aber der Prototyp gibt ein anderes Objekt (natürlich wird es das). Ich bin mir nicht sicher, wie ich es erreichen soll.Java Bean - Benötigen Sie dasselbe Objekt über den Prototyp-Bereich
Für z.B. In der Folge werden die Bohnen A, B1 und B2 zweimal bezeichnet (das sind die Proto-Bohnen). Jedes neue B1- und B2-Objekt wird jedes Mal mit demselben Thread erstellt. Ich möchte nur ein B1- und B2-Objekt im selben Thread, obwohl ich es zweimal referenziert habe. Wenn B1 und B2 Singleton ist, wird es über alle Threads hinweg gleich sein, was nicht passieren sollte. Könnten Sie mir bitte eine Idee geben, wie Sie dies erreichen können?
<bean id="A" class="mypackage.foo" scope="prototype">
<property name="myMap">
<bean class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="targetMapClass">
<value>java.util.HashMap</value>
</property>
<property name="sourceMap">
<map>
<entry key="KEY1">
<ref bean="B1"></ref>
</entry>
<entry key="KEY2">
<ref bean="B2"></ref>
</entry>
<entry key="KEY3">
<ref bean="B1"></ref>
</entry>
<entry key="KEY4">
<ref bean="B2"></ref>
</entry>
</map>
</property>
</bean>
</property>
Ausgezeichneter Vorschlag. Ich habe eine benutzerdefinierte Bean für den Simplethread-Bereich hinzugefügt und diese verwendet. Vielen Dank –
Seien Sie einfach sicher, Ihr threadscope nett zu säubern. Wenn die Threads wiederverwendet werden, können Sie auf "alte" Daten stoßen. –
Danke Martin für den Rat. Ich werde es überprüfen. –