【发布时间】:2019-05-17 09:42:06
【问题描述】:
在我的 Spring Boot 应用程序中,我使用 spring-boot-starter-data-mongodb:2.1.3 来获取 MongoDB 的连接。我有一些属性文件来配置 mongoDB:
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=database
如果我设置了不正确的主机名 (spring.data.mongodb.host=incorrect host) 或端口,我的应用程序将成功启动。但我希望该应用程序失败,就像我设置错误格式的主机名一样 (spring.data.mongodb.host=hxxt://wrongFormat)
Caused by: com.mongodb.MongoException: host and port should be specified in host:port format
我该怎么做?
例子:
application.propertires
#Wrong host
spring.data.mongodb.host=www.google.com
spring.data.mongodb.port=27017
spring.data.mongodb.database=database
DemoApplication.java:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Config.java:
@Configuration
public class Config {
@Bean
public CommandLineRunner commandLineRunner(JobRepository jobRepository ){
return args -> jobRepository.findById("1");
}
}
JobRepository.java:
public interface JobRepository extends MongoRepository<Job, String> {}
Job.java:
@Getter
@Setter
@EqualsAndHashCode
@NoArgsConstructor
@Document(collection = "Jobs")
public class Job {
@Id
private String id = null;
private String field;
}
【问题讨论】:
-
您可以将属性加载到包装类中,并一一检查那些基本属性,如果参数的格式正确。如果没有,记录错误并抛出异常/System.exit(0)
-
spring boot & spring data mongodb的版本是多少?我试过它没有开始,它很快就失败了
spring boot 2.1.3.RELEASE -
@Barath,我使用 spring-boot-starter-data-mongodb 2.1.3 版。你设置了什么主机名或端口?如果我尝试使用主机名 www.google.com 我的应用程序将成功启动。格式错误时发生错误。当数据库不可用并中止启动应用程序时,我想得到错误。
-
它正在中止,请在此处查看日志
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=www.google.com:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketTim -
请分享一个示例项目以重现该问题。
标签: java spring spring-mongodb spring-mongo