Error instantiating bean of type [io.micronaut.data.mongodb.operations.MongoDatabaseNameProvider]

144 Views Asked by At
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;
  }
}
0

There are 0 best solutions below