GraalVM mongodb-reactive SpringNative,Java能正常运行,但是编译出的可执行文件无法连接到mongo
问题复现
依赖中选用的是:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>
增加了MongoConfig
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.gridfs.ReactiveGridFsTemplate;
import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories;
@Configuration
@EnableReactiveMongoRepositories("run.runnable.xxx.repository")
public class MongoConfig extends AbstractReactiveMongoConfiguration {
@Value("${spring.data.mongodb.host}")
String host;
@Value("${spring.data.mongodb.port}")
String port;
@Value("${spring.data.mongodb.username}")
String username;
@Value("${spring.data.mongodb.password}")
String password;
@Value("${spring.data.mongodb.database}")
String database;
@Override
protected String getDatabaseName() {
return database;
}
@Override
public MongoClient reactiveMongoClient() {
String uri =
return MongoClients.create(uri);
}
@Bean
public ReactiveGridFsTemplate reactiveGridFsTemplate(MappingMongoConverter mappingMongoConverter) {
return new ReactiveGridFsTemplate(reactiveMongoDbFactory(), mappingMongoConverter, "attachments");
}
private MongoClient mongoClient;
@Autowired
public void setMongoClient(MongoClient mongoClient) {
this.mongoClient = mongoClient;
}
@Bean
public ReactiveMongoTemplate reactiveMongoTemplate() {
return new ReactiveMongoTemplate(mongoClient, getDatabaseName());
}
}