Как я могу использовать функцию RestControler в другом RestControler - PullRequest
0 голосов
/ 12 декабря 2018

Я получаю org.springframework.beans.factory.UnsatisfiedDependencyException, когда я вызываю SaleRestService в ProductRestService, как показано в коде ниже.

Как я могу сделать это правильно?

@RestController
@CrossOrigin("*")
public class ProductRestService {
    @Autowired
    private ProductRepository productRepository;
    @Autowired
    public SaleRestService saleRestService ; 

    @RequestMapping(value="/productQuatityMinusOne", method=RequestMethod.GET)
    @ResponseBody
    public void ProductQuatityMinusOne(@RequestParam(name="id") Long id){
        Product p = productRepository.findProductById(id);
        double salePrice = p.getPrice();
        Date now = new java.util.Date();
        Sale s = new Sale(id,salePrice,now);
        saleRestService .saveOneSale(s);
        p.setId(id);
        int q = p.getQuantity()-1;
        p.setQuantity(q);
        productRepository.save(p);
    }
}

@RestController
@CrossOrigin("*")
public class SaleRestService {

    @Autowired
    private SaleRepository saleRepository; 

    //Save one sale
    @RequestMapping(value="/saveOneSale", method=RequestMethod.POST)
    @ResponseBody
    public Sale saveOneSale(@RequestBody Sale s){
         return saleRepository.save(s);
    }
}

1 Ответ

0 голосов
/ 12 декабря 2018

Вы не должны вызывать ваши контроллеры друг от друга.

Два решения:

  • Поместите код saveOneSale в другой @Service и вызовите его из ваших @RestControllers
  • Вы можете перенаправить HTTP-вызов ProductQuatityMinusOne в ProductRestService для сохраненияOneSale в SaleRestService с помощью перенаправления при начальной загрузке, например return "redirect:/saveOneSale";, но я не знаю, будет ли это работать, потому что вы будете перенаправлять на POSTобработчик.

Лично я бы сделал первое решение:

  • удалите @RestController из SaleRestService
  • создайте класс SaleRestController, аннотируйте его с помощью @RestControllerи поместите метод со следующей аннотацией: @RequestMapping (value = "/ saveOneSale", method = RequestMethod.POST)
  • в этом методе вызовите SaleRestService.saveOneSale

Вседолжен просто работать (ТМ)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...