Voici quelques façons de créer une instance de MongoClient
, en le configurant et en l'utilisant dans l'application Spring Boot.
(1) Enregistrement d'une instance Mongo à l'aide de métadonnées basées sur Java :
@Configuration
public class AppConfig {
public @Bean MongoClient mongoClient() {
return MongoClients.create();
}
}
Utilisation depuis CommandLineRunner
run
de méthode (tous les exemples sont exécutés de la même façon ):
@Autowired
MongoClient mongoClient;
// Retrieves a document from the "test1" collection and "test" database.
// Note the MongoDB Java Driver API methods are used here.
private void getDocument() {
MongoDatabase database = client.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("test1");
Document myDoc = collection.find().first();
System.out.println(myDoc.toJson());
}
(2) Configuration à l'aide de la classe AbstractMongoClientConfiguration et utilisation avec MongoOperations :
@Configuration
public class MongoClientConfiguration extends AbstractMongoClientConfiguration {
@Override
public MongoClient mongoClient() {
return MongoClients.create();
}
@Override
protected String getDatabaseName() {
return "newDB";
}
}
Notez que vous pouvez définir le nom de la base de données (newDB
) auquel vous pouvez vous connecter. Cette configuration est utilisée pour travailler avec la base de données MongoDB à l'aide des API Spring Data MongoDB :MongoOperations
(et son implémentation MongoTemplate
) et le MongoRepository
.
@Autowired
MongoOperations mongoOps;
// Connects to "newDB" database, and gets a count of all documents in the "test2" collection.
// Uses the MongoOperations interface methods.
private void getCollectionSize() {
Query query = new Query();
long n = mongoOps.count(query, "test2");
System.out.println("Collection size: " + n);
}
(3) Configuration à l'aide de la classe AbstractMongoClientConfiguration et utilisation avec MongoRepository
Utilisation de la même configuration MongoClientConfiguration
classe (ci-dessus dans le sujet 2 ), mais annotez également avec @EnableMongoRepositories
. Dans ce cas, nous utiliserons MongoRepository
méthodes d'interface pour obtenir des données de collection sous forme d'objets Java.
Le référentiel :
@Repository
public interface MyRepository extends MongoRepository<Test3, String> {
}
Le Test3.java
Classe POJO représentant le test3
document de collection :
public class Test3 {
private String id;
private String fld;
public Test3() {
}
// Getter and setter methods for the two fields
// Override 'toString' method
...
}
La méthode suivante pour obtenir des documents et les imprimer en tant qu'objets Java :
@Autowired
MyRepository repository;
// Method to get all the `test3` collection documents as Java objects.
private void getCollectionObjects() {
List<Test3> list = repository.findAll();
list.forEach(System.out::println);
}