Spring Data MongoDB привет мир пример

Spring Data MongoDB привет мир пример

В этом руководстве мы покажем вам, как использовать инфраструктуру «http://www.springsource.org/spring-data/mongodb[SpringData for MongoDB]» для выполнения операций CRUD в MongoDB с помощью аннотации Spring и схемы XML.

Updated on 1/04/2013
Статья обновлена ​​для использования последней версии SpringData v 1.2.0.RELEASE, это была v1.0.0.M2.

Используемые инструменты и технологии:

  1. Spring Data MongoDB - 1.2.0.RELEASE

  2. Spring Core - 3.2.2. РЕЛИЗ

  3. Драйвер Java Mongo - 2.11.0

  4. Затмение - 4.2

  5. JDK - 1.6

  6. Maven - 3.0.3

P.S Spring Data requires JDK 6.0 and above, and Spring Framework 3.0.x and above.

1. Структура проекта

Классическая структура каталогов Java-проекта в стиле Maven.

SpringData-helloworld-example

2. зависимость

Требуются следующие библиотеки:

*spring-data-mongodb
В настоящее время jar «spring-data-mongodb» доступен только в «http://maven.springframework.org/milestone», поэтому вы также должны объявить этот репозиторий. *

Updated on 13/09/2012
spring-data-mongodb доступен в центральном репозитории Maven, репозиторий Spring больше не требуется.

pom.xml


    4.0.0
    com.example.core
    SpringMongoDBExample
    jar
    1.0
    SpringMongoExample
    http://maven.apache.org

    

        
        
            org.springframework
            spring-core
            3.2.2.RELEASE
        

        
            org.springframework
            spring-context
            3.2.2.RELEASE
        

        
        
            org.mongodb
            mongo-java-driver
            2.11.0
        

        
        
            org.springframework.data
            spring-data-mongodb
            1.2.0.RELEASE
        

        
            cglib
            cglib
            2.2.2
        

    

    
        
            
                maven-compiler-plugin
                3.0
                
                    1.6
                    1.6
                
            
            
                org.apache.maven.plugins
                maven-eclipse-plugin
                2.9
                
                    true
                    true
                
            
        
    

3. Конфигурация Spring, аннотации и XML

Здесь мы покажем вам два способа настройки данных Spring и подключения к MongoDB с помощью аннотации и схемы XML.

Примечание
См. Этот официальный справочникConnecting to MongoDB with Spring.

3.1 Annotation
РасширяетAbstractMongoConfiguration - это самый быстрый способ, он помогает настроить все, что вам нужно для запуска, например объектmongoTemplate.

SpringMongoConfig.java

package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;

import com.mongodb.Mongo;
import com.mongodb.MongoClient;

@Configuration
public class SpringMongoConfig extends AbstractMongoConfiguration {

    @Override
    public String getDatabaseName() {
        return "yourdb";
    }

    @Override
    @Bean
    public Mongo mongo() throws Exception {
        return new MongoClient("127.0.0.1");
    }
}

В качестве альтернативы я предпочитаю этот, более гибкий, чтобы настроить все.

SpringMongoConfig1.java

package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

import com.mongodb.MongoClient;

@Configuration
public class SpringMongoConfig1 {

    public @Bean
    MongoDbFactory mongoDbFactory() throws Exception {
        return new SimpleMongoDbFactory(new MongoClient(), "yourdb");
    }

    public @Bean
    MongoTemplate mongoTemplate() throws Exception {

        MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());

        return mongoTemplate;

    }

}

И загрузите его с помощьюAnnotationConfigApplicationContext:

    ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
    MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");

3.2 XML Schema

SpringConfig.xml



    
    

    
        
    

И включите его сGenericXmlApplicationContext Spring:

   ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml");
   MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");

So, XML or Annotation?
На самом деле, оба делают одно и то же, просто исходя из личных предпочтений. Лично мне нравится XML для настройки вещей.

4. Модель пользователя

Пользовательский объект, аннотированный @Document - какую коллекцию сохранить. Позже мы покажем вам, как использовать данные Spring для привязки этого объекта к / из MongoDB.

User.java

package com.example.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "users")
public class User {

    @Id
    private String id;

    String username;

    String password;

    //getter, setter, toString, Constructors

}

5. Демо - CRUD Операции

Полный пример, чтобы показать вам, как использовать данные Spring для выполнения операций CRUD в MongoDB. API данных Spring довольно чистые и должны быть понятны.

App.java

package com.example.core;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import com.example.config.SpringMongoConfig;
import com.example.model.User;
//import org.springframework.context.support.GenericXmlApplicationContext;

public class App {

    public static void main(String[] args) {

    // For XML
    //ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml");

    // For Annotation
    ApplicationContext ctx =
             new AnnotationConfigApplicationContext(SpringMongoConfig.class);
    MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");

    User user = new User("example", "password123");

    // save
    mongoOperation.save(user);

    // now user object got the created id.
    System.out.println("1. user : " + user);

    // query to search user
    Query searchUserQuery = new Query(Criteria.where("username").is("example"));

    // find the saved user again.
    User savedUser = mongoOperation.findOne(searchUserQuery, User.class);
    System.out.println("2. find - savedUser : " + savedUser);

    // update password
    mongoOperation.updateFirst(searchUserQuery,
                         Update.update("password", "new password"),User.class);

    // find the updated user object
    User updatedUser = mongoOperation.findOne(searchUserQuery, User.class);

    System.out.println("3. updatedUser : " + updatedUser);

    // delete
    mongoOperation.remove(searchUserQuery, User.class);

    // List, it should be empty now.
    List listUser = mongoOperation.findAll(User.class);
    System.out.println("4. Number of user = " + listUser.size());

    }

}

Выход

1. user : User [id=516627653004953049d9ddf0, username=example, password=password123]
2. find - savedUser : User [id=516627653004953049d9ddf0, username=example, password=password123]
3. updatedUser : User [id=516627653004953049d9ddf0, username=example, password=new password]
4. Number of user = 0

Скачать исходный код

Скачать -SpringMongoDB-HelloWorld-Example.zip (24 КБ)