2011-03-19 30 views
2

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?

回答

1

我不使用彈簧,但這似乎文章談談你的需要,當你的應用程序啓動一個鉤子做的事情正是:http://leshazlewood.com/2007/07/30/spring-application-bootstrap-data/

你可以做Datastore.ensureIndexes /帽()那裏。

你也可以閱讀這個關於使用@Autowire和註解來代替xml的話題,如果你喜歡那些東西的話。

http://groups.google.com/group/morphia/browse_thread/thread/1013b17963f29468

+0

好文章,謝謝。我會盡快嘗試。 – NagyI 2011-03-20 08:45:16