3

스프링 데이터 리 액티브 및 스프링 부트 2.0을 사용하여 MongoDB에 연결하려고 할 때마다 다음 오류가 발생합니다.스프링 데이터 리 액티브 및 스프링 부트 2.0을 사용하여 mongoDB에 연결할 수 없습니다.

Caused by: java.lang.UnsupportedOperationException: No SSL support in java.nio.channels.AsynchronousSocketChannel. For SSL support use com.mongodb.connection.netty.NettyStreamFactoryFactory 
     at com.mongodb.connection.AsynchronousSocketChannelStreamFactory.<init>(AsynchronousSocketChannelStreamFactory.java:41) 
     at com.mongodb.async.client.MongoClients.getStreamFactory(MongoClients.java:228) 
     at com.mongodb.async.client.MongoClients.create(MongoClients.java:177) 
     at com.mongodb.async.client.MongoClients.create(MongoClients.java:123) 
     at com.mongodb.reactivestreams.client.MongoClients.create(MongoClients.java:103) 
     at com.mongodb.reactivestreams.client.MongoClients.create(MongoClients.java:53) 
     at org.springframework.boot.autoconfigure.mongo.ReactiveMongoClientFactory.createNetworkMongoClient(ReactiveMongoClientFactory.java:123) 
     at org.springframework.boot.autoconfigure.mongo.ReactiveMongoClientFactory.createMongoClient(ReactiveMongoClientFactory.java:69) 
     at org.springframework.boot.autoconfigure.mongo.ReactiveMongoAutoConfiguration.reactiveStreamsMongoClient(ReactiveMongoAutoConfiguration.java:67) 
     at org.springframework.boot.autoconfigure.mongo.ReactiveMongoAutoConfiguration$$EnhancerBySpringCGLIB$$94536095.CGLIB$reactiveStreamsMongoClient$1(<generated>) 
     at org.springframework.boot.autoconfigure.mongo.ReactiveMongoAutoConfiguration$$EnhancerBySpringCGLIB$$94536095$$FastClassBySpringCGLIB$$2171f816.invoke(<generated>) 
     at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
     at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) 
     at org.springframework.boot.autoconfigure.mongo.ReactiveMongoAutoConfiguration$$EnhancerBySpringCGLIB$$94536095.reactiveStreamsMongoClient(<generated>) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) 
     at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1093) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:534) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:491) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) 
     at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:250) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056) 
     at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:833) 
     at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:740) 
     at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:466) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1093) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:534) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:491) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) 
     at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:250) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056) 
     at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:833) 
     at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:740) 
     at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:466) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1093) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:534) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:491) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1604) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1349) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:574) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:491) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) 
     at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:250) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056) 
     at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:570) 
     at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
     at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:358) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1337) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:574) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:491) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:865) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
     at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:809) 
     at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:404) 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:347) 
     at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:128) 
     at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) 
     at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) 
     at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:102) 
     at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:47) 
     at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:243) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:226) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288) 
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:245) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) 
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
     at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
     at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 
     at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:189) 
     at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283) 
     at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173) 
     at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) 
     at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128) 
     at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203) 
     at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) 
     at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) 

오류 메시지는 SSL 지원을 위해 NettyStreamFactoryFactory를 사용하도록 알려줍니다. 누구든지이 작업을 수행하는 방법에 대한 예제가 있습니까? 내가 연결하려고하는 데이터베이스는 MongoDB Atlas입니다. SSL 연결이 엄격히 필요합니다.

다음
@SpringBootApplication 
public class FlixMovieApiReactiveApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(FlixMovieApiReactiveApplication.class, args); 
    } 

    // Add Data 
    @Bean 
    public CommandLineRunner initDatabase(MovieRepository repository) { 

     // entire process blocking, done in beginning 
     Flux<Movie> movieList = Flux.just(
       new Movie("movie1", "1", "movie1"), 
       new Movie("movie2", "1", "movie2"), 
       new Movie("movie3", "5", "movie3"), 
       new Movie("movie4", "1", "movie4"), 
       new Movie("movie5", "3", "movie5"), 
       new Movie("movie6", "1", "movie6"), 
       new Movie("movie7", "2", "movie7"), 
       new Movie("movie8", "3", "movie8"), 
       new Movie("movie9", "1", "movie9"), 
       new Movie("movie10", "2", "movie10"), 
       new Movie("movie11", "1", "movie11"), 
       new Movie("movie12", "3", "movie12"), 
       new Movie("movie13", "1", "movie13"), 
       new Movie("movie14", "4", "movie14"), 
       new Movie("movie15", "1", "movie15"), 
       new Movie("movie16", "4", "movie16") 
     ); 

     // delete then insert data. blockLast(), allows something to subscribe to pipeline, block for last emitted element 
     // data is written to the database. 
     return args -> repository.deleteAll().thenMany(repository.save(movieList)).blockLast(); 
    } 
} 

@RestController 
public class MovieRestController { 

    @Autowired 
    private MovieService movieService; 

    @GetMapping(value = "/movies") 
    public Flux<ResponseEntity<Movie>> list() { 

     return movieService.list().map(m -> new ResponseEntity<>(m, HttpStatus.OK)); 
    } 

    @GetMapping(value = "/moviesByRating") 
    public Flux<ResponseEntity<Movie>> findByRating(
      @RequestParam(value = "rating", required = false) final String rating) { 

     return movieService.findByRating(rating) 
       .map(m -> new ResponseEntity<>(m, HttpStatus.OK)); 

    } 

    @GetMapping("/movies/{movieId}") 
    public Mono<ResponseEntity<Movie>> read(
      @PathVariable("movieId") final String movieId) { 

     return movieService.read(movieId) 
       .map(m -> new ResponseEntity<>(m, HttpStatus.OK)) 
       .defaultIfEmpty(new ResponseEntity<>(HttpStatus.NOT_FOUND)); 
    } 

    @DeleteMapping("/movies/{movieId}") 
    public Mono<ResponseEntity<Movie>> delete(
      @PathVariable("movieId") final String movieId) { 

     return movieService.delete(movieId) 
       .map(m -> new ResponseEntity<>(m, HttpStatus.OK)) 
       .defaultIfEmpty(new ResponseEntity<>(HttpStatus.NOT_FOUND)); 
    } 

    @PutMapping("/movies/{movieId}") 
    public Mono<ResponseEntity<Movie>> update(
      @PathVariable("movieId") final String movieId, 
      @RequestBody final MovieRequest movieRequest) { 

     return movieService.update(movieId, movieRequest) 
       .map(m -> new ResponseEntity<>(m, HttpStatus.OK)) 
       .defaultIfEmpty(new ResponseEntity<>(HttpStatus.NOT_FOUND)); 

    } 

    @PostMapping("/movies") 
    public Mono<ResponseEntity<Movie>> create(
      @RequestBody final Mono<MovieRequest> movieRequest) { 

     return movieService.create(movieRequest) 
       .map(m -> new ResponseEntity<>(m, HttpStatus.OK)) 
       .defaultIfEmpty(new ResponseEntity<>(HttpStatus.NOT_FOUND)); 

    } 

} 

@Service 
public class MovieServiceImpl implements MovieService { 

    @Autowired 
    private MovieRepository movieRepository; 

    @Override 
    public Flux<Movie> list(){ 
     return movieRepository.findAll(); 
    } 

    @Override 
    public Flux<Movie> findByRating(final String rating){ 
     return movieRepository.findByRating(rating); 
    } 

    @Override 
    public Mono<Movie> update(String id, MovieRequest movieRequest) { 

     return movieRepository.findOne(id).map(existingMovie -> { 

      if(movieRequest.getDescription() != null){ 
       existingMovie.setDescription(movieRequest.getDescription()); 
      } 
      if(movieRequest.getRating() != null){ 
       existingMovie.setRating(movieRequest.getRating()); 
      } 
      if(movieRequest.getTitle() != null) { 
       existingMovie.setTitle(movieRequest.getTitle()); 
      } 

      return existingMovie; 

     }).then(movieRepository::save); 
    } 

    @Override 
    public Mono<Movie> create(Mono<MovieRequest> movieRequest) { 

     return movieRequest.map(newMovie -> { 

      Movie movie = new Movie(); 

      if(newMovie.getDescription() != null){ 
       movie.setDescription(newMovie.getDescription()); 
      } 
      if(newMovie.getRating() != null){ 
       movie.setRating(newMovie.getRating()); 
      } 
      if(newMovie.getTitle() != null) { 
       movie.setTitle(newMovie.getTitle()); 
      } 

      return movie; 

     }).then(movieRepository::save); 
    } 

    @Override 
    public Mono<Movie> read(String id) { 
     return movieRepository.findOne(id); 
    } 

    @Override 
    public Mono<Movie> delete(String id) { 
     return movieRepository.findOne(id) 
       .flatMap(oldValue -> movieRepository.delete(id).then(Mono.just(oldValue))) 
       .singleOrEmpty(); 
    } 
} 

@Repository 
public interface MovieRepository extends ReactiveMongoRepository<Movie, String> { 

    Flux<Movie> findByRating(String rating); 
} 

@Document 
public class Movie { 

    @Id 
    private String id; 
    private String title; 
    private String rating; 
    private String description; 

    public Movie(String title, String rating, String description) { 
     this.title = title; 
     this.rating = rating; 
     this.description = description; 
    } 

    public Movie() { 
    } 


    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getRating() { 
     return rating; 
    } 

    public void setRating(String rating) { 
     this.rating = rating; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 
} 

--- 

spring: 
    data: 
     mongodb: 
      uri: mongodb://admin:[email protected]:27017,movie-shard-00-01-xfzg4.mongodb.net:27017,movie-shard-00-02-xfzg4.mongodb.net:27017/movie?ssl=true&replicaSet=Movie-shard-0&authSource=admin 

management: 
    context-path: /admin 

server: 
    port: 8080 

이는 봄 데이터 몽고 및/또는 봄 부팅 문제 같은 소리 pom.xml 파일

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.flix.movie</groupId> 
    <artifactId>flix-movie-api-reactive</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>flix-movie-api-reactive</name> 
    <description>Demo project for Spring Boot using Non-Blocking Reactive Spring Web MVC and Spring Data MongoDB</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>2.0.0.BUILD-SNAPSHOT</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
     <docker.image.prefix>flix</docker.image.prefix> 
     <docker.spotify.plugin.version>0.4.5</docker.spotify.plugin.version> 
     <swagger.version>2.4.0</swagger.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-webflux</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>io.springfox</groupId> 
      <artifactId>springfox-swagger2</artifactId> 
      <version>${swagger.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>io.springfox</groupId> 
      <artifactId>springfox-swagger-ui</artifactId> 
      <version>${swagger.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework.boot.experimental</groupId> 
       <artifactId>spring-boot-dependencies-web-reactive</artifactId> 
       <version>0.1.0.BUILD-SNAPSHOT</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
      <!-- Package as a docker image --> 
      <plugin> 
       <groupId>com.spotify</groupId> 
       <artifactId>docker-maven-plugin</artifactId> 
       <version>${docker.spotify.plugin.version}</version> 
       <configuration> 
        <serverId>docker-hub</serverId> 
        <imageName>${docker.image.prefix}/${project.artifactId}</imageName> 
        <dockerDirectory>src/main/docker</dockerDirectory> 
        <resources> 
         <resource> 
          <targetPath>/</targetPath> 
          <directory>${project.build.directory}</directory> 
          <include>${project.build.finalName}.jar</include> 
         </resource> 
        </resources> 
        <imageTags> 
         <imageTag>${project.version}</imageTag> 
        </imageTags> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 

</project> 

답변

0

입니다 :

다음은 내 코드의 나머지 부분입니다. 처음에는 Spring Boot가 Spring Data Mongo 클라이언트 구성에 적절한 정보를 제공하는 것 같습니다.

the dedicated issue tracker for Spring Data Mongo에 문제를 만들 수 있습니까?

+0

답장을 보내 주셔서 감사합니다. 문제 추적기에 문제가 생성되었습니다. –

+0

질문을 편집하여 링크에 반영 할 수 있습니까? 또는 문제 자체에서이 문제가 해결 된 경우 자신의 질문에 대답 할 수 있습니다. 감사! –

+0

이 문제는'MongoClient' 설정과 관련이 있습니다. SSL을 사용하려면 Netty가 필요하며 Spring Boot에서 구성해야합니다. – mp911de

0

연결을 관리하는 것은 MongoClient입니다. 귀하의 경우 그것은 기본 보호되지 않은 것입니다, 그래서 만약 당신이 보안을 활성화 Mongo 인스턴스에 그는 다시 반송됩니다.

@Configuration 
@EnableReactiveMongoRepositories 
class MongoConfig : AbstractReactiveMongoConfiguration() { 

override fun reactiveMongoClient(): MongoClient = MongoClients.create() 

override fun getDatabaseName(): String = "mydb" 

} 

이것은 봄 부팅 2 M4의 반응 형 몽고 용 구성입니다. MongoClients 메소드 또는 적절한 생성자를 통해 클라이언트를 사용자 정의 할 수 있습니다.