MorphiaのGoogleCodeサイトは、「Guice、Spring、およびその他のDIフレームワークでうまく機能する」と述べています。
私は現在Springを学んでいるので、これら2つのツールを接続して実験しているだけです。User
MongoDBにMorphiaを使用してユーザーオブジェクトを格納するPOJOを作成しました。また、MorphiaからオブジェクトにアクセスするためのUserDAO
クラスを作成しました。BasicDAO
私のSpringアプリケーションコンテキスト構成XMLは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
xmlns:aop="http://www.springframework.org/schema/aop">
<bean class="java.lang.String" id="mongoDb">
<constructor-arg value="test"/>
</bean>
<bean class="com.google.code.morphia.Morphia" id="morphia" />
<bean class="com.mongodb.Mongo" id="mongo"/>
<bean class="hu.inagy.testspring.daos.UserDAO" id="userDao">
<constructor-arg ref="morphia" index="0" />
<constructor-arg ref="mongo" index="1" />
<constructor-arg ref="mongoDb" index="2" />
</bean>
</beans>
機能をテストするための単純なメインクラスがあります。
public class App
{
public static void main( String[] args )
{
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/app-context.xml");
UserDAO userDao = (UserDAO) applicationContext.getBean("userDao");
userDao.deleteByQuery(userDao.createQuery());
User user = new User();
user.setName("Test");
userDao.save(user);
User ret = userDao.find().get();
System.out.println("Saved user is: "+ret);
}
}
これは問題なく動作しますが、すべてを実行したかどうかはわかりません。たとえば、私はデータストアに電話ensureIndexes()
をかけていません。ensureCaps()
私のコードには、MorphiaオブジェクトのPOJOに対する明示的なマッピング呼び出しもありません。
これらは私のために自動的に行われますか、それともSpringでMorphiaを正しく使用するために他のことを行う必要がありますか?