我是SpringBoot的新手。我已经构建了一个简单的应用程序,该应用程序应在开发环境中使用伪造的数据,并在测试环境中连接到MongoDb。开发环境没有mongodb设置。

我尝试使用Spring Boot限定符/配置文件来实现它。

我有一个主类,如下所示:

@SpringBootApplication
public class Main {
   public static void main(String[] args) {
       SpringApplication.run(Main.class, args);
   }
}


我有一个DAO接口StudentDao.java

public interface StudentDao {
    Student getStudentById(String id);
}


然后,我为DAO创建了几个实现,一个实现用于伪造数据,一个实现了来自Mongo的数据。

FakeStudentDaoImpl.java

@Repository
@Qualifier("fakeData")
public class FakeStudentDaoImpl implements StudentDao {

    private static Map<String, Student> students;

    static {

        students = new HashMap<String, Student>(){
            {
                put("1", new Student("Ram", "Computer Science"));
            }
        };
    }

    @Override
    public Student getStudentById(String id){
        return this.students.get(id);
    }
}


MongoStudentDaoImpl.java

@Repository
@Qualifier("mongoData")
public class MongoStudentDaoImpl implements StudentDao {

    @Autowired
    private MongoStudentRepo repo;

    @Override
    public Student getStudentById(String id) {
        return  repo.findById(id).get();
    }
}


MongoStudentRepo是扩展MongoRepository的简单接口:

public interface MongoStudentRepo extends MongoRepository<Student, String> {
}


我的POM文件具有以下依赖项:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>


当然,我还有其他控制器类。
在有MongoDb的测试环境中,它可以正常工作,并且可以连接到它。但是,当我尝试在本地环境中启动它时,它无法启动,因为在启动时找不到MongoDb。

如何在本地环境中禁用MongoDb部分(并仅使用伪造数据)?我想使相同的代码在两种环境中都能工作。

提前致谢。

最佳答案

您可以使用嵌入式MongoDB数据库。 Here一个例子。

07-24 09:45
查看更多