我有Spring Boot应用程序:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication()
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
build.gradle包含:
testCompile组:“de.flapdoodle.embed”,名称: “de.flapdoodle.embed.mongo”,版本:“2.0.0”
和
编译( “org.springframework.boot:弹簧引导起动数据mongodb的”)
有使用MongoTemplate的控制器
@RestController
@RequestMapping(Constants.MAILBOX_BASE_PATH)
public class MController {
private static final Logger log = LoggerFactory.getLogger(MailboxController.class);
private MongoTemplate mongoTemplate;
@Autowired
public MController(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
}
并测试
@RunWith(SpringRunner.class)
@SpringBootTest()
@AutoConfigureMockMvc
public class MontrollerTests {
@Autowired
private MockMvc mvc;
private MongoTemplate _mongoTemplate;
...
}
我的目的是使用嵌入式MongoDB进行上述测试。 当我运行它时会弹出以下错误:
2017-03-05 17:14:51.993 ERROR 27857 --- [主要] o.s.boot.SpringApplication:应用程序启动失败
org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为'mController'的bean时出错......
并且在堆栈跟踪中有
java.lang.IllegalStateException:mongo配置也无效 必须指定uri或主机/端口/凭证
我的应用程序属性:
server.port=8090
spring.data.mongodb.uri=mongodb://localhost:27017/test
spring.data.mongodb.port=27017
如何解决这个问题? 提前谢谢。
答案 0 :(得分:1)
您可以尝试使用@Bean
课程为mongoTemplate
创建EmbeddedMongoFactoryBean
吗? e.g:
@Bean
public MongoTemplate mongoTemplate() throws IOException {
EmbeddedMongoFactoryBean mongo = new EmbeddedMongoFactoryBean();
mongo.setBindIp("127.0.0.1");
MongoClient mongoClient = mongo.getObject();
MongoTemplate mongoTemplate = new MongoTemplate(mongoClient, "some_database");
return mongoTemplate;
}