Spring Data Exemple de MongoDB Hello World

Spring Data MongoDB hello world example

Dans ce didacticiel, nous vous montrons comment utiliser le framework «http://www.springsource.org/spring-data/mongodb[SpringData for MongoDB]» pour effectuer des opérations CRUD dans MongoDB, via l'annotation de Spring et le schéma XML.

L'article deUpdated on 1/04/2013
est mis à jour pour utiliser la dernière version de SpringData v 1.2.0.RELEASE, c'était la v1.0.0.M2.

Outils et technologies utilisés:

  1. Spring Data MongoDB - 1.2.0.RELEASE

  2. Spring Core - 3.2.2.RELEASE

  3. Pilote Java Mongo - 2.11.0

  4. Eclipse - 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. Structure du projet

Une structure de répertoire de projet Java de style Maven classique.

SpringData-helloworld-example

2. Dépendance

Les bibliothèques suivantes sont requises:

*spring-data-mongodb
Actuellement, le fichier jar «spring-data-mongodb» n'est disponible que dans «http://maven.springframework.org/milestone», vous devez donc également déclarer ce dépôt. *

Updated on 13/09/2012
spring-data-mongodb est disponible dans le référentiel central Maven, le référentiel Spring n'est plus nécessaire.

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. Configuration de Spring, annotation et XML

Ici, nous vous montrons deux façons de configurer les données Spring et de vous connecter à MongoDB, via une annotation et un schéma XML.

Remarque
Reportez-vous à cette référence officielleConnecting to MongoDB with Spring.

3.1 Annotation
Étend leAbstractMongoConfiguration est le moyen le plus rapide, il aide à configurer tout ce dont vous avez besoin pour démarrer, comme l'objetmongoTemplate.

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");
    }
}

Alternativement, je préfère celui-ci, plus flexible pour tout configurer.

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;

    }

}

Et chargez-le avecAnnotationConfigApplicationContext:

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

3.2 XML Schema

SpringConfig.xml



    
    

    
        
    

Et incluez-le avec lesGenericXmlApplicationContext de Spring:

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

So, XML or Annotation?
En fait, les deux font la même chose, c'est juste en fonction de leurs préférences personnelles. Personnellement, j'aime XML pour configurer les choses.

4. Modèle utilisateur

Un objet utilisateur, annoté @Document - quelle collection enregistrer. Plus tard, nous vous montrerons comment utiliser les données Spring pour lier cet objet à / depuis 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. Démo - Opérations CRUD

Exemple complet pour vous montrer comment utiliser les données Spring pour effectuer des opérations CRUD dans MongoDB. Les API de données Spring sont assez propres et devraient être explicites.

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());

    }

}

Sortie

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

Télécharger le code source

Téléchargez-le -SpringMongoDB-HelloWorld-Example.zip (24 Ko)