2016-06-24 45 views
-1

我刚开始使用Spring Boot,并喜欢用它编写应用程序的简单性。我想知道它是否以及如何用它来编写(基于web的)服务。没有网络服务器的弹簧数据自动装配

我有一个仓库接口:

public interface OrderRepository extends MongoRepository<Order, String> 
{ 

} 

如果我在春季启动应用程序中使用@Autowired我可以用它做我的数据库CRUD操作。

但是,我现在想用它在一个简单的应用程序/测试没有所有的web服务器后端的东西。

但是如果我定义了下面的测试库接口有没什么可自动连接到:

public class TestMongoInterface 
{ 
    @Autowired 
    private OrderRepository orderRepository; 
    @Test 
    public void canReadOrders() 
    { 
     List<Order> orders = orderRepository.findAll(); 
     for(Order o : orders) 
      System.out.println("found: "+o.toString()); 
    } 
} 

我已经找到了一些解决办法,其亲近,但我如果可能的话我想和大家分享我的仓库这些解决方法阻止的不同服务之间的接口。

所以我的问题是:有没有一种方法来自动调用MongoRepository接口到我的应用程序,其中所有的数据库查询代码生成,但不是所有其他的东西,我不需要像Web服务器/ servlet代码?

+0

为什么不行? Spring Boot!= web ...只是不包括网络依赖...它将工作,无论如何。测试弹簧引导应用程序在其参考指南中有相当清楚的记录。 –

+0

您是否试过[文档](http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications )? – kryger

+0

问题是太多的文档,不知道从哪里开始,但显然我错误地认为Spring boot == web。所以,而不是剥离我应该找到如何不添加这些组件。我错过了-web中的spring-boot-starter-web依赖关系我可能只需要找到相应的依赖关系 –

回答

1

试试这个工作正常,当我使用JpaRepository。没有自动装配是不可能的。

@Configuration 
    public class TestMongoInterface 
    { 
     @Autowired 
     private OrderRepository orderRepository; 
     @Autowired 
     public void canReadOrders() 
     { 
      List<Order> orders = orderRepository.findAll(); 
      for(Order o : orders) 
       System.out.println("found: "+o.toString()); 
     } 
    }