【问题标题】:Spring data autowiring without webserver没有网络服务器的 Spring 数据自动装配
【发布时间】:2016-10-26 22:21:53
【问题描述】:

我刚开始使用 Spring Boot,并且喜欢用它编写应用程序的简单性。我想知道它是否以及如何使用它来编写(非基于 Web 的)服务。

我有一个仓库接口:

public interface OrderRepository extends MongoRepository<Order, String>
{

}

如果我在 Spring 启动应用程序中使用 @Autowired,我可以使用它对我的数据库执行 CRUD 操作。

但是我现在想在一个简单的应用程序/测试中使用它,而不需要所有的网络服务器后端。

但是,如果我定义了以下测试,则存储库接口没有任何东西可以自动连接到:

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 接口自动连接到我的应用程序,在该应用程序中生成所有 db 查询代码,但不是所有其他我不需要的东西,比如 webserver/servlet 代码?

【问题讨论】:

  • 那为什么不行呢? Spring Boot != web...只是不要包含 web 依赖项...无论如何它都会起作用。测试 Spring Boot 应用程序在它的参考指南中有非常清楚的记录。
  • 你试过the documentation吗?
  • 问题是文档太多,不知道从哪里开始,但显然我错误地认为 Spring boot == web.因此,我应该找到不添加这些组件的方法,而不是剥离。我错过了 spring-boot-starter-web 依赖项中的 -web 我可能只需要找到适当的依赖项
  • 如果您深入挖掘,我还可以鼓励您编写一个具有自动配置功能的自己的启动器,而不是一个通用模块。对我们来说,共享通用功能就像一种魅力。
  • 参见Accessing Data with JPA 指南,了解使用数据库和 JPA 的简单非 Web Spring Boot 应用程序。

标签: java spring spring-boot spring-data autowired


【解决方案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());
        }
    }

【讨论】:

    猜你喜欢
    • 2020-10-05
    • 2018-05-06
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多