get some problems in my spring application.
I have a very simple spring beans, they are injected into various other spring beans. During debugging that I found, they are called twice, Constructor and @PostConstruct are called twice.
There is no interface technology in my application. It is easy to work with the database.
Spring Configuration
<?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>
Spring Bean Class
@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(); } }
The constructor "TransactionDAO" is called twice.
I tried to see the call stack trace on
Throwable t = new Throwable(); System.out.println(t.getStackTrace()[1].toString());
and every time he showed the following
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java spring singleton postconstruct
Faisal basra
source share