I have a web application which includes a REST API and I want to do an integration test over it. I'm using MongoDB and I want to inject its instance. However, every time I try to do so the autowiring fails with an error like
java.lang.IllegalStateException: Failed to load ApplicationContext
Here are my files;
@Configuration public class SpringMongoConfig extends AbstractMongoConfiguration {
@Override
protected String getDatabaseName() {
return "pensionplanner";
}
@Override
@Bean
public Mongo mongo() throws Exception {
return new MongoClient("127.0.0.1");
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(),getDatabaseName());
}
}
WebAppInitializer.java
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] {RootConfig.class, SpringMongoConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] {};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
DaoMango.java
@Repository("daoMongo") @Transactional
public class DaoMongo implements Dao {
private MongoOperations mongoOperations;
public DaoMongo() {
mongoOperations = loadMongoConfiguration();
}
//some queries will come here
private MongoOperations loadMongoConfiguration() {
@SuppressWarnings("resource")
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(SpringMongoConfig.class);
MongoOperations mongoOperation = (MongoOperations) applicationContext.getBean("mongoTemplate");
return mongoOperation;
}
}
Test.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringMongoConfig.class})
public class Test {
@Autowired
DaoMongo dao;
The problem is above that I can't inject dao DaoMongo instance here, however I can do it on any src/main/java folder. Any solution would be very appreciated.
Aucun commentaire:
Enregistrer un commentaire