This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener). # Fixed URLs ## Fixed But Review Recommended These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended. * http://ethlo.com/maven (301) with 2 occurrences migrated to: https://ethlo.com/maven ([https](https://ethlo.com/maven) result 404). ## Fixed Success These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended. * http://maven.apache.org/xsd/maven-4.0.0.xsd with 53 occurrences migrated to: https://maven.apache.org/xsd/maven-4.0.0.xsd ([https](https://maven.apache.org/xsd/maven-4.0.0.xsd) result 200). * http://maven.apache.org/maven-v4_0_0.xsd with 4 occurrences migrated to: https://maven.apache.org/maven-v4_0_0.xsd ([https](https://maven.apache.org/maven-v4_0_0.xsd) result 301). * http://projects.spring.io/spring-data-cassandra with 1 occurrences migrated to: https://projects.spring.io/spring-data-cassandra ([https](https://projects.spring.io/spring-data-cassandra) result 301). * http://projects.spring.io/spring-data-jpa with 1 occurrences migrated to: https://projects.spring.io/spring-data-jpa ([https](https://projects.spring.io/spring-data-jpa) result 301). * http://projects.spring.io/spring-data-ldap with 1 occurrences migrated to: https://projects.spring.io/spring-data-ldap ([https](https://projects.spring.io/spring-data-ldap) result 301). * http://projects.spring.io/spring-data-mongodb with 1 occurrences migrated to: https://projects.spring.io/spring-data-mongodb ([https](https://projects.spring.io/spring-data-mongodb) result 301). * http://projects.spring.io/spring-data-solr with 1 occurrences migrated to: https://projects.spring.io/spring-data-solr ([https](https://projects.spring.io/spring-data-solr) result 301). # Ignored These URLs were intentionally ignored. * http://maven.apache.org/POM/4.0.0 with 114 occurrences * http://www.w3.org/2001/XMLSchema-instance with 57 occurrences Original pull request: #454
Spring Data MongoDB 2.0 - Reactive examples
This project contains samples of reactive data access features with Spring Data (MongoDB).
Prerequisites
MongoDB requires the Reactive Streams driver to provide reactive data access. The Reactive Streams driver maintains its own connections. Using Spring Data MongoDB Reactive support together with blocking Spring Data MongoDB data access will open multiple connections to your MongoDB servers.
Reactive Template API usage with ReactiveMongoTemplate
The main reactive Template API class is ReactiveMongoTemplate, ideally used through its interface ReactiveMongoOperations. It defines a basic set of reactive data access operations using Project Reactor Mono and Flux reactive types.
template.insertAll(Flux.just(new Person("Walter", "White", 50),
new Person("Skyler", "White", 45),
new Person("Saul", "Goodman", 42),
new Person("Jesse", "Pinkman", 27)));
Flux<Person> flux = template.find(Query.query(Criteria.where("lastname").is("White")), Person.class);
The test cases in ReactiveMongoTemplateIntegrationTest show basic Template API usage.
Reactive data access reads and converts individual elements while processing the stream.
Reactive Repository support
Spring Data MongoDB provides reactive repository support with Project Reactor and RxJava 1 reactive types. The reactive API supports reactive type conversion between reactive types.
public interface ReactivePersonRepository extends ReactiveCrudRepository<Person, String> {
Flux<Person> findByLastname(String lastname);
@Query("{ 'firstname': ?0, 'lastname': ?1}")
Mono<Person> findByFirstnameAndLastname(String firstname, String lastname);
// Accept parameter inside a reactive type for deferred execution
Flux<Person> findByLastname(Mono<String> lastname);
Mono<Person> findByFirstnameAndLastname(Mono<String> firstname, String lastname);
@InfiniteStream // Use a tailable cursor
Flux<Person> findWithTailableCursorBy();
}
public interface RxJava1PersonRepository extends RxJava1CrudRepository<Person, String> {
Observable<Person> findByLastname(String lastname);
@Query("{ 'firstname': ?0, 'lastname': ?1}")
Single<Person> findByFirstnameAndLastname(String firstname, String lastname);
// Accept parameter inside a reactive type for deferred execution
Observable<Person> findByLastname(Single<String> lastname);
Single<Person> findByFirstnameAndLastname(Single<String> firstname, String lastname);
@InfiniteStream // Use a tailable cursor
Observable<Person> findWithTailableCursorBy();
}