nhận được một số vấn đề trong ứng dụng mùa xuân của tôi.Singleton mùa xuân được gọi hai lần
Tôi có đậu mùa xuân rất đơn giản, chúng được tiêm vào các loại đậu xuân khác nhau. Trong khi gỡ rối tôi tìm thấy, họ đang được gọi là hai lần, Constructor & @PostConstruct cả hai được gọi là hai lần.
Ứng dụng của tôi không có công nghệ giao diện người dùng. Nó chỉ đơn giản là cho nhiệm vụ phụ trợ liên quan.
Xuân Cấu hình
<?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>
Xuân Bean Lớp
@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" đang được gọi là hai lần.
Tôi cố gắng để xem cuộc gọi stack trace bởi
Throwable t = new Throwable();
System.out.println(t.getStackTrace()[1].toString());
và mỗi lần nó cho thấy sau
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Bạn có chắc chắn '@ PostConstruct' cũng được gọi là hai lần không? Constructor được gọi hai lần có thể dễ dàng giải thích, nhưng không phải là '@ PostConstruct'. –
Bạn có cấu hình bộ điều phối servlet không? –
Có thể bạn đã nhập khẩu xml ngữ cảnh ứng dụng từ tệp cấu hình xml của một ngữ cảnh khác qua? –