Kết nối mongodb 3.0 sử dụng Spring framework

Trong bài viết này tôi sẽ hướng dẫn các bạn cách sử dụng Spring framework để kết nối tới MongoDB, một database rất phổ biến hiện này. Sau đây là các bước:

  1. Đầu tiên bạn có thể download và cài đặt mongodb theo link sau: https://docs.mongodb.com/getting-started/shell/installation/ Chú ý sử dụng phiên bản mongodb từ 3.0 trở đi.

  2. Tiếp nữa tạo một Maven project trong eclipse. Những ai chưa biết có thể tham khảo tại http://www.tech-recipes.com/rx/39279/create-a-new-maven-project-in-eclipse/

  3. Trở lại vấn đề chính làm sao để sử dụng Spring framework để kết nối đến mongodb.

  • Bạn mở file porm.mxl mà thêm đoạn cấu hình sau:

     <!-- mongodb java driver -->
      <dependency>
          <groupId>org.mongodb</groupId>
          <artifactId>mongo-java-driver</artifactId>
          <version>3.2.1</version>
      </dependency>
    
      <!-- Spring data mongodb -->
      <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-mongodb</artifactId>
          <version>1.8.2.RELEASE</version>
      </dependency>
    

    Đây là 2 thư viện cơ bản nhất bạn phải có. Sau đó tạo file cấu hình bean với tên application.xml. Tên này tùy bạn đặt, nội dung dạng như sau:

            <?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:context="http://www.springframework.org/schema/context"
          xmlns:util="http://www.springframework.org/schema/util"
          xmlns:mongo="http://www.springframework.org/schema/data/mongo"
          xsi:schemaLocation="http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context-3.0.xsd
                http://www.springframework.org/schema/data/mongo
                http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                http://www.springframework.org/schema/util
                http://www.springframework.org/schema/util/spring-util-3.0.xsd">
    
          <!-- Seeds -->
          <bean id="mongoSeedListID" class="java.util.ArrayList">
          <constructor-arg>
              <list>
                  <ref bean="mongoSeedlID" />
              </list>
          </constructor-arg>
          </bean>
    
          <bean id="mongoSeedlID" class="com.mongodb.ServerAddress">
                  <constructor-arg type="java.lang.String" name="host" value="DATABASE_HOST" />
                  <constructor-arg type="int" name="port" value="DATABASE_PORT" />
          </bean>
    
          <!-- Credentials -->
          <bean id="mongoCredentialListID" class="java.util.ArrayList">
          <constructor-arg>
              <list>
                  <ref bean="mongoCredentialID" />
              </list>
          </constructor-arg>
          </bean>
    
          <bean id="mongoCredentialID" class="com.mongodb.MongoCredential">
                  <constructor-arg name="mechanism" value = "#{T(com.mongodb.AuthenticationMechanism).MONGODB-CR}" />
                  <constructor-arg type="java.lang.String" name="userName" value="DATABASE_USERNAME" />
                  <constructor-arg type="java.lang.String" name="source" value="DATABASE_SOURCE" />
                  <constructor-arg type="char[]" name="password" value="DB_USER_PASS" />
          </bean>
    
          <!-- MongoClient -->
          <bean id="mongoClientID" class="com.mongodb.MongoClient">
                  <constructor-arg ref="mongoSeedListID" />
                  <constructor-arg ref="mongoCredentialID"  />
          </bean>
    
          <!-- MongoDbFactory -->
          <bean id="simpleMongoDbFactoryID" class="org.springframework.data.mongodb.core.SimpleMongoDbFactory">
              <constructor-arg ref="mongoClientID" />
              <constructor-arg name="databaseName" value="APP_DATABASENAME" />
          </bean>
    
          <!-- MongoTemplate -->
          <bean id="mongoTemplateID" class="org.springframework.data.mongodb.core.MongoTemplate">
              <constructor-arg ref="simpleMongoDbFactoryID" />
          </bean>
    
       </beans>
    

    Thay thế các giá trị DATABASE_HOST, DATABASE_PORT, Username, Password, Source cho đúng với tham số kết nối tới database. Chú ý phần mechanism, bạn phải thiết lập đúng với kiểu mã hóa authen mà bạn setup khi cài đặt database. Ở đây tôi để mặc định giá trị "MONGODB-CR", ngoài ra còn có SCRAM_SHA_1, PLAIN ...

    Giờ bạn có thể sử dụng bean để thao tác với database:

      class Test {
          @Inject pivate MongoTemplate bean;
    
          public void displayData(){
                  DBCollection collection = bean.getCollection(collection_name);
                  DBObject result = collection.find(new BasicDBObject(key, value)).next();
                  System.out.println(result.toString());
          }
      }