我是SpringBoot的新手,所以请填写免费填写需要的详细信息。
我在SpringBoot应用程序中编写了此Rest Controller,该应用程序按预期工作。我的问题是,如何正确创建此控制器的实例,以便我可以使用它来查询数据库?
我试图做这样的事情,但只是不断出错。
task.error!.localizedDescription
我试图避免在SpringBoot应用程序本身上进行REST调用的情况。
提前多多感谢
答案 0 :(得分:2)
在控制器上执行数据库调用并不是一个好习惯。您可以使用Spring Data Repository,也可以编写使用存储库(在数据库上执行调用)的服务层代码。
有人可能会这样做
@Service
public class InventoryService {
@Autowire
private IInventoryItemRepo inventoryItemRepo;
@Transactional
public List<Inventory> getInventories() {
//other business rules
return inventoryItemRepo.findAll();
}
//some other logic here
}
然后在你的控制器上
@RestController
public class InventoryController {
Logger logger = LoggerFactory.getLogger(InventoryController.class);
@Autowired
private InventoryService inventoryService;
/**
* @return all items in inventory
*/
@HystrixCommand(fallbackMethod="failGood")
@RequestMapping(value = "/inventory", method = RequestMethod.GET)
@ResponseBody Iterable<Inventory> getInventory() {
return inventoryService.findAll();
}
....
}
如果你想避免在spring上执行调用,你可以将服务层代码注入到将执行调用的组件,假设它是用Spring编写的。
如果没有,你也可以建立一个Message Queue 并在那里发送消息。
另一种选择是Spring Data REST
答案 1 :(得分:1)
您不直接使用控制器来查询数据库,或者这样做不是一个好习惯。
更好的选择是您可以在控制器中使用 Spring数据存储库和@Autowire
。
我通常做的是创建服务类,其中存储库接口是自动装配的。在控制器中,我自动连接服务类。
我对以下帖子的回答可能会为您解决更多问题:
Structure of RESTful Service with Java Spring for Beginner