Error instantiating bean of type [io.micronaut.data.mongodb.operations.MongoDatabaseNameProvider]
Message: Could not resolve placeholder ${auto.test.resources.mongodb.uri}
Path Taken: MongoDatabaseNameProviderFactory.primaryMongoDatabaseNameProvider(DefaultMongoConfiguration mongoConfiguration,BeanContext beanContext,RuntimeEntityRegistry runtimeEntityRegistry,SchemaTenantResolver tenantResolver) --> MongoDatabaseNameProviderFactory.primaryMongoDatabaseNameProvider([DefaultMongoConfiguration mongoConfiguration],BeanContext beanContext,RuntimeEntityRegistry runtimeEntityRegistry,SchemaTenantResolver tenantResolver)
io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [io.micronaut.data.mongodb.operations.MongoDatabaseNameProvider]
Caused by: io.micronaut.context.exceptions.ConfigurationException: Could not resolve placeholder ${auto.test.resources.mongodb.uri}
at app//io.micronaut.context.env.DefaultPropertyPlaceholderResolver$PlaceholderSegment.getValue(DefaultPropertyPlaceholderResolver.java:310)
at app//io.micronaut.context.env.DefaultPropertyPlaceholderResolver.resolveRequiredPlaceholdersObject(DefaultPropertyPlaceholderResolver.java:111)
at app//io.micronaut.context.env.PropertySourcePropertyResolver.resolvePlaceHoldersIfNecessary(PropertySourcePropertyResolver.java:799)
at app//io.micronaut.context.env.PropertySourcePropertyResolver.getProperty(PropertySourcePropertyResolver.java:393)
at app//io.micronaut.context.DefaultApplicationContext.getProperty(DefaultApplicationContext.java:219)
at app//io.micronaut.context.AbstractInitializableBeanDefinition.resolvePropertyValue(AbstractInitializableBeanDefinition.java:2109)
at app//io.micronaut.context.AbstractInitializableBeanDefinition.getPropertyValueForSetter(AbstractInitializableBeanDefinition.java:1076)
at app//io.micronaut.configuration.mongo.core.$DefaultMongoConfiguration$Definition.inject(Unknown Source)
at app//io.micronaut.configuration.mongo.core.$DefaultMongoConfiguration$Definition.instantiate(Unknown Source)
at app//io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2307)
I have recently started using micronaut. Created a configuration class where I created bean of MongoClient. While running this application and testing from postman, it breaks during repository call.
I tried adding all the dependencies in gradle. Still it fails.
Code for reference:
Controller:
@Controller("/hello")
public class EmployeeController {
@Inject EmployeeRepository empRepository;
private static final Logger LOG = LoggerFactory.getLogger(EmployeeController.class);
@Get(value = "/getemployee", produces = MediaType.TEXT_PLAIN)
public String getEmployee() {
LOG.info("Inside EmployeeController..");
Employee emp = empRepository.find("12345");
return emp.getName();
}
}
Repository:
@MongoRepository(databaseName = "mydb")
public interface EmployeeRepository extends CrudRepository<Employee, String> {
Employee find(String id);
}
Mongo Config:
@Factory
public class DatabaseConfig {
@Value("${mongodb.host:mydb1.mongodb.net}") private String host;
@Value("${mongodb.username:user}") private String username;
@Value("${mongodb.password:pass}") private String password;
@Value("${mongodb.retryWrites:true}") private String retryWrites;
@Value("${mongodb.write:majority}") private String write;
@Primary
@Bean
@Replaces(MongoClient.class)
public MongoClient createMongoClient() {
LOG.debug("Mongo client new conf override");
ConnectionString connectionString = new ConnectionString(getUri());
MongoClientSettings mongoClientSettings =
MongoClientSettings.builder().applyConnectionString(connectionString).build();
return MongoClients.create(mongoClientSettings);
}
private String getUri() {
return "mongodb+srv://"
+ username
+ ":"
+ password
+ "@"
+ host
+ "/?retryWrites="
+ retryWrites
+ "&w="
+ write;
}
}