Morphia的Google Code站點說它「在Guice,Spring和其他DI框架中非常有用」。在Spring中使用Morphia
我現在在學習Spring,所以我只是試驗連接這兩個工具。 我創建了一個User
POJO,用於將用戶對象與Morphia存儲在MongoDB中。我還創建了一個UserDAO
類,用於擴展Morphia的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。
這些是爲我自動完成還是我應該做其他事情來正確使用Morphia與Spring?
好文章,謝謝。我會盡快嘗試。 – NagyI 2011-03-20 08:45:16