Spring 没有网络服务器的数据自动装配
Spring data autowiring without webserver
我刚开始使用 Spring Boot 并且喜欢用它编写应用程序的简单性。我想知道是否以及如何使用它来编写(非基于 Web 的)服务。
我有一个存储库界面:
public interface OrderRepository extends MongoRepository<Order, String>
{
}
如果我在 Spring 引导应用程序中使用 @Autowired,我可以使用它对我的数据库执行 CRUD 操作。
但是我现在想在一个简单的 application/test 中使用它,而不需要所有网络服务器后端的东西。
但是,如果我定义以下测试,则存储库接口没有任何内容可以自动连接到:
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 接口自动连接到我的应用程序,其中会生成所有数据库查询代码,但不会生成我不需要的所有其他内容,例如 webserver/servlet 代码?
试试这个,当我使用 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());
}
}
我刚开始使用 Spring Boot 并且喜欢用它编写应用程序的简单性。我想知道是否以及如何使用它来编写(非基于 Web 的)服务。
我有一个存储库界面:
public interface OrderRepository extends MongoRepository<Order, String>
{
}
如果我在 Spring 引导应用程序中使用 @Autowired,我可以使用它对我的数据库执行 CRUD 操作。
但是我现在想在一个简单的 application/test 中使用它,而不需要所有网络服务器后端的东西。
但是,如果我定义以下测试,则存储库接口没有任何内容可以自动连接到:
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 接口自动连接到我的应用程序,其中会生成所有数据库查询代码,但不会生成我不需要的所有其他内容,例如 webserver/servlet 代码?
试试这个,当我使用 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());
}
}