Morphia 的 Google Code 网站称它“与 Guice、Spring 和其他 DI 框架配合得很好”。
我现在正在学习 Spring,所以我只是在尝试连接这两个工具。我创建了一个User
POJO 来在 MongoDB 中使用 Morphia 存储用户对象。我还创建了一个从 MorphiaUserDAO
扩展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?