Spring mongodb整合
Spring mongodb整合
特別なJarバッグに注意してください.
spring-core-4.05.RELEASE.jar
Objnese isStdはspring 4.0以上で提供されます.
バージョンが正しくないと投げられます.
Caused by: java.lang.NoClass DefFoundErrer: org/spring frame ebook/Objness is/Objnese Std
spring-data-mongodb-1.5.RELEASE.jar
このjarの前に1.6を使って以下の異常を投げます.
org.springfraamew ork.data.mapping.model.FieldNaming Strategy
1.接続プロファイルのmonogodb.propertiesを追加する:
mono.host=127.1.0.1
mono.port=27017
mono.username=sa
mono.password=sa
mono.db=mydb
注意monogo.dbのパラメータにスペースがあるか、またはデータ名の仕様に合わないかは、エラーが発生します.
2.springプロファイルを追加します.
4.操作クラスを作成し、MongoTemplateオブジェクトの獲得クラスを継承する:
5.参照
特別なJarバッグに注意してください.
spring-core-4.05.RELEASE.jar
Objnese isStdはspring 4.0以上で提供されます.
バージョンが正しくないと投げられます.
Caused by: java.lang.NoClass DefFoundErrer: org/spring frame ebook/Objness is/Objnese Std
spring-data-mongodb-1.5.RELEASE.jar
このjarの前に1.6を使って以下の異常を投げます.
org.springfraamew ork.data.mapping.model.FieldNaming Strategy
1.接続プロファイルのmonogodb.propertiesを追加する:
mono.host=127.1.0.1
mono.port=27017
mono.username=sa
mono.password=sa
mono.db=mydb
注意monogo.dbのパラメータにスペースがあるか、またはデータ名の仕様に合わないかは、エラーが発生します.
2.springプロファイルを追加します.
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
xmlns:cache = "http://www.springframework.org/schema/cache"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mongodb.properties</value>
</list>
</property>
</bean>
<mongo:mongo id="mongo" host="${mongo.host}" port="${mongo.port}" />
<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongo.username}"/>
<constructor-arg name="password" value="${mongo.password}"/>
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg value="${mongo.db}" />
<constructor-arg ref="userCredentials" />
</bean>
</beans>
3.Mongo Templateオブジェクトの獲得クラスを作成する:package com.engine.manage.dao;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.data.mongodb.core.MongoTemplate;
public abstract class AbstractBaseMongoTemplete implements ApplicationContextAware {
protected MongoTemplate mongoTemplate;
public void setMongoTemplate(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);
setMongoTemplate(mongoTemplate);
}
}
4.操作クラスを作成し、MongoTemplateオブジェクトの獲得クラスを継承する:
package com.engine.manage.dao;
import org.springframework.stereotype.Repository;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
/**
* mongoDB
* @author cglin-work
*
*/
@Repository
public class MongoDbDao extends AbstractBaseMongoTemplete{
private DBCollection dbCollection = null;
private final String collection = "myCollection";
private DBCollection getConn(){
if(dbCollection == null){
return mongoTemplate.getCollection(collection);
}
return dbCollection;
}
public void save(BasicDBObject bdbObj) {
getConn().save(bdbObj);
}
}
5.参照
@Autowired
private MongoDbDao tdao;
public MongoDbDao getTdao() {
return tdao;
}
public void setTdao(MongoDbDao tdao) {
this.tdao = tdao;
}
@Override
public void saveTest(){
BasicDBObject bdbObj = new BasicDBObject();
bdbObj.put("a", "is a");
tdao.save(bdbObj);
}