У меня странная проблема с загрузкой Spring и одним контроллером.
Я полагаю, что это связано с конфликтом с другим контроллером с аналогичным названием (более новая версия)
Структура выглядит так
controllers
-v2
-PartController(@RestController)
-v1
-PartController(@RepositoryRestController)
repositories
-v2
-PartRepository(@Repository)
-v1
-PartRepository(@RepositoryRestResource(path = "/part"))
Причина этого в том, что мы внедряем уровень обслуживания и хотим отойти от репозиториев Restful. Поэтому v1
будет в конечном итоге удалено.
Однако при запуске службы исходные методы хранилища иногда не отображаются (недетерминированные).
В других случаях это работает, при проверке чванства. Это правильный результат при просмотре на сваггере
Правильные конечные точки
Неправильные конечные точки (базовые методы jpa)
v1 PartController
@RepositoryRestController
public class PartController {
... more code
v1 PartRepository
@CrossOrigin
@RepositoryRestResource(path = "/part")
public interface PartRepository extends JpaRepository<Part, Long> {
... more code
v2 PartController
@RestController("PartController2")
@RequestMapping(path = "/api/v2", name = "PartController2")
public class PartController implements PartsApi {
@RequestMapping(
method = RequestMethod.POST,
path = "/parts/usage/")
@Override
public List<PartResponse> getPartUsage(@RequestBody final List<PartUsageRequest> request) {
return this.service.getPartUsage(request);
}
v2 PartRepository
@Repository("PartRepository2")
public interface PartRepository extends CrudRepository<Part, Long> {
Optional<Part> findById(Long id);
}
Обратите внимание, что новая конечная точка работает независимо от другой
Как упоминалось выше, эта доступность конечных точек случайна.
Может ли это быть состояние гонки, когда Spring boot отображает каждый контроллер при запуске?
Это совершенно случайная, повторная очистка или чистка службы могут работать по назначению. После повторного запуска эти конечные точки на /parts
недоступны, что вызывает 404
Весна Версия: 1.5.10.RELEASE
Springfox (Swagger): 2.8.0