使用spring-boot-starter-data-mongodb-reactive 连接Mongodb 异常

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
    </dependency>
java.lang.IllegalArgumentException: Prohibited character at position 0
	at com.mongodb.internal.authentication.SaslPrep.saslPrep(SaslPrep.java:90) ~[mongodb-driver-core-4.0.5.jar:na]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	|_ checkpoint ⇢ Handler com.bluewhale.simple.spring.webflux.controller.StudentWebFluxController#getAllStudent() [DispatcherHandler]
	|_ checkpoint ⇢ HTTP GET "/api/getAllStudent" [ExceptionHandlingWebHandler]
Stack trace:
		at com.mongodb.internal.authentication.SaslPrep.saslPrep(SaslPrep.java:90) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.authentication.SaslPrep.saslPrepStored(SaslPrep.java:55) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.getAuthenicationHash(ScramShaAuthenticator.java:316) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.computeClientFinalMessage(ScramShaAuthenticator.java:182) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.evaluateChallenge(ScramShaAuthenticator.java:121) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.SaslAuthenticator$Continuator$1.run(SaslAuthenticator.java:251) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.SaslAuthenticator$Continuator$1.run(SaslAuthenticator.java:246) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:207) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.SaslAuthenticator$Continuator.continueConversation(SaslAuthenticator.java:246) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.SaslAuthenticator$Continuator.start(SaslAuthenticator.java:241) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.SaslAuthenticator$2$1.onResult(SaslAuthenticator.java:106) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.SaslAuthenticator$2$1.onResult(SaslAuthenticator.java:98) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.CommandHelper$1.onResult(CommandHelper.java:59) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.CommandHelper$1.onResult(CommandHelper.java:53) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:398) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:375) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:676) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:643) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:513) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:510) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.connection.netty.NettyStream.readAsync(NettyStream.java:232) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection.readAsync(InternalStreamConnection.java:510) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection.access$1000(InternalStreamConnection.java:75) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:633) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:618) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:513) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:510) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.connection.netty.NettyStream.readAsync(NettyStream.java:232) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.connection.netty.NettyStream.handleReadResponse(NettyStream.java:262) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.connection.netty.NettyStream.access$800(NettyStream.java:69) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.connection.netty.NettyStream$InboundBufferHandler.channelRead0(NettyStream.java:321) ~[mongodb-driver-core-4.0.5.jar:na]
		at com.mongodb.connection.netty.NettyStream$InboundBufferHandler.channelRead0(NettyStream.java:318) ~[mongodb-driver-core-4.0.5.jar:na]
		at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.55.Final.jar:4.1.55.Final]
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.55.Final.jar:4.1.55.Final]
		at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_332]

	at com.mongodb.internal.authentication.SaslPrep.saslPrep(SaslPrep.java:90) ~[mongodb-driver-core-4.0.5.jar:na]
	at com.mongodb.internal.authentication.SaslPrep.saslPrepStored(SaslPrep.java:55) ~[mongodb-driver-core-4.0.5.jar:na]
	at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.getAuthenicationHash(ScramShaAuthenticator.java:316) ~[mongodb-driver-core-4.0.5.jar:na]
            final int codepoint = normalized.codePointAt(i);
            // 3. Prohibit
            if (prohibited(codepoint)) {
                throw new IllegalArgumentException("Prohibited character at position " + i);
            }

在这里插入图片描述
normalized = " "

问题就找到了,password: 123456

spring:
  data:
    mongodb:
      host: 82.89.27.16
      database: Student
      username: test
      password: 123456
      port: 27017
  main:
    web-application-type: reactive

修改 password 加上""

spring:
  data:
    mongodb:
      host: 82.89.27.16
      database: Student
      username: test
      password: "123456"
      port: 27017
  main:
    web-application-type: reactive

OK , 可以正常访问mongodb啦, 从异常可以看到spring-boot-starter-data-mongodb-reactive 是构建在Netty Stream 之上的,Netty Stream 是基于Netty的,Netty作为网络编程框架是一个好的选择,也是一个好的开始。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐