Daniel
Daniel

Reputation: 221

connect spring boot with mongodb using java class

I have this structure

project  (module.pom)
- connection                     (module.jar)
      - src/main/java
            -com.mycompany.connection
                -connectionBD.class
      - ...
      - pom.xml
- person                         (module.jar)
      - src/main/java
            - com.mycompany.person
                -personApplication.class
            - com.mycompany.person.controller
                -...
            - com.mycompany.person.model
                -...
      - src/main/resources
      - ...
      - pom.xml
pom.xml

my connectionBD.class class is this.

@Configuration
public class connectionBD {

    @Bean
    public MongoDatabaseFactory mongoDatabaseFactory(){
        return new SimpleMongoClientDatabaseFactory("mongo://localhost:27017/lydsam");
    }

    @Bean
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoDatabaseFactory());
    }
}

and my PersonApplication.class class that is in another module.

@SpringBootApplication(scanBasePackages = { "com.mycompany.person", "com.mycompany.connection" })
public class PersonApplication {

    public static void main(String[] args) {
        try {
            SpringApplication.run(PersonApplication.class, args);
        } catch (Exception e) {
            System.out.println("Error: "+ e.getMessage());
        }
    }
}

When I run the project, I get an error saying that my connection to my database is wrong and I don't know what the problem is. Somebody could help me.

Error message

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoTemplate' defined in class path resource [com/mycompany/connection/connectionBD.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.core.MongoTemplate]: Factory method 'mongoTemplate' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoDatabaseFactory' defined in class path resource [com/mycompany/connection/connectionBD.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.MongoDatabaseFactory]: Factory method 'mongoDatabaseFactory' threw exception; nested exception is java.lang.IllegalArgumentException: The connection string is invalid. Connection strings must start with either 'mongodb://' or 'mongodb+srv://

Upvotes: 2

Views: 4773

Answers (1)

0gam
0gam

Reputation: 1423

Connection strings must start with either 'mongodb://' or 'mongodb+srv://

You need to edit. mongo -> mongodb SimpleMongoClientDatabaseFactory

@Configuration
public class connectionBD {

    @Bean
    public MongoDatabaseFactory mongoDatabaseFactory(){
        return new SimpleMongoClientDatabaseFactory("mongodb://localhost:27017/lydsam");
    }
}

Upvotes: 1

Related Questions