我有一个像春天豆:
public class MongoDaoImpl implements MongoDao {
private static final Mongo mongo = new Mongo(MySettings.INSTANCE.getMongoHost());
}
在我的servlet.xml中,我有:
<bean id="mongoDao" class="com.abc.dao.MongoDaoImpl">
</bean>
现在我收到一个错误:
java.lang.NoClassDefFoundError: Could not initialize class MongoDaoImpl
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)
MySettings看起来像:
public enum MySettings {
INSTANCE;
private String mongoHost;
private MySettings() {
mongoHost = "127.0.0.1";
}
public String getMongoHost() {
return mongoHost;
}
}
因此,当spring尝试设置MongoDaoImpl时,它会因为MySettings而崩溃。 如果我删除了mongoDaoImpl中的MySettings,只需要硬编码“127.0.0.1”就可以了。
我是否必须在bean中连接MySettings,然后以某种方式告诉MongoDaoImpl呢?
答案 0 :(得分:0)
我不知道究竟是什么失败(不应该),但你的Mongo
实例也应该是一个bean。在xml中声明它,并使用属性占位符,以便您可以使用.properties
文件对其进行配置。类似的东西:
<bean id="mongo" class="...Mongo">
<constructor-arg value="${mongo.host}" />
</bean>
顺便说一下,为什么不使用spring-data-mongodb中的MongoTemplate
?
答案 1 :(得分:0)
尝试以下任何一项帮助