bekomme ein Problem in meine Feder Anwendung.Spring Singleton wird zweimal aufgerufen
Ich habe sehr einfache Frühlingsbohnen, sie werden in verschiedene andere Frühlingsbohnen injiziert. Während des Debuggens, das ich gefunden habe, werden sie zweimal aufgerufen, Konstruktor & @PostConstruct beide zweimal aufgerufen.
Meine Anwendung hat keine Front-End-Technologie. Es ist einfach für die Backend-Aufgabe verwandt.
Federkonfiguration
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
<context:component-scan base-package="com.green.integration" />
<!-- ######################################################## -->
<!-- EXPOSING SPRING BEAN VIA HTTPINVOKER SPRING REMOTING -->
<!-- ######################################################## -->
<bean name="/switch"
class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service" ref="SwitchController" />
<property name="serviceInterface"
value="com.green.ISwitchController" />
</bean>
<!-- Load in application properties reference -->
<bean id="applicationProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:application.properties" />
</bean>
<bean id="mongo" class="com.mongodb.Mongo">
<constructor-arg value="${mongo.server}" />
<constructor-arg value="${mongo.port}" />
</bean>
<bean id="morphia" class="com.google.code.morphia.Morphia">
</bean>
</beans>
Frühlings-Bean-Klasse
@Repository
public class TransactionDAO extends BasicDAO<Transaction, ObjectId> {
private Datastore datastore;
@Autowired
public TransactionDAO(Mongo mongo, Morphia morphia) {
super(mongo, morphia, "itransact");
morphia.map(Transaction.class);
// TO USE MONGO WITHOUT SECURITY
this.datastore = morphia.createDatastore(mongo, "itransact");
logger.debug("***** CONNECTED TO MONGODB SUCCESSFULLY *****");
this.datastore.ensureIndexes();
// this.datastore.ensureCaps();
}
}
Constructor "TransactionDAO" zweimal aufgerufen wird.
Ich habe versucht, Call-Stack-Trace von
Throwable t = new Throwable();
System.out.println(t.getStackTrace()[1].toString());
und jedes Mal, es zeigte den folgenden
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Sind Sie absolut sicher, dass '@ PostConstruct' auch doppelt aufgerufen wird? Konstruktor, der zweimal aufgerufen wird, kann leicht erklärt werden, aber nicht '@ PostConstruct'. –
Haben Sie eine Dispatcher-Servlet-Konfiguration? –
Vielleicht haben Sie Ihren XML-Anwendungskontext aus der XML-Konfigurationsdatei eines anderen Kontexts über importiert? –