Как работать с несколькими контроллерами в приложении Spring Boot

Приложение с несколькими классами контроллеров

Я использую несколько контроллеров в разных пакетах, но при запуске моего загрузочного приложения это дает сбой при запуске:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.xyz.UserIntegrationServiceApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'userController' for bean class [com.xyz.a.UserController] conflicts with existing, non-compatible bean definition of same name and class [com.xyz.b.UserController]

Загрузочный основной класс

@SpringBootApplication
public class UserIntegrationServiceApplication {

    public static void main(String[] args) { 
        SpringApplication.run(UserIntegrationServiceApplication.class, args); 
    }
}  

Код контроллера

@RestController
@RequestMapping("/api/")
public class UserController {

    public static final Logger logger = LoggerFactory.getLogger(UserController.class);

    @Autowired
    UserService userService;

    @RequestMapping(value = "/di/user", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
    public ResponseEntity<?> createUser(@RequestBody(required = true) User user, @RequestHeader(required = true, value = HttpHeaders.AUTHORIZATION) String authorization) {

        return userService.createUser(user,authorization);

    }
}

}

@RestController
@RequestMapping("/api/")
public class UserController {

public static final Logger logger = LoggerFactory.getLogger(UserController.class);

@Autowired
UserService userService;

@RequestMapping(value = "/ds/user", method = RequestMethod.POST, consumes = {
        MediaType.APPLICATION_JSON_VALUE }, produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<?> loginUser(@RequestBody(required = true) LoginRequest login,
        @RequestHeader HttpHeaders headers) {

    return userService.loginUser(login, headers);

}

}

###########

Я пытаюсь найти наилучший способ сделать этот основной класс доступным к моим контроллерам.

Пожалуйста помоги мне с этим

Не могли бы вы предоставить свои коды Controller?

Xtreme Biker 17.04.2018 17:41

обновил код контроллера .. проверьте пожалуйста

user3274140 17.04.2018 18:08

Есть ли причина, по которой, помимо переименования одного из двух контроллеров, должно быть два контроллера? Исходя из предоставленного кода, похоже, что методы createUser и loginUser могут находиться в одном контроллере, потому что они в любом случае сопоставляются с разными местами после / api /.

Ryan D 17.04.2018 18:20

Я могу установить тот же контроллер, если не найду никакого решения .. но я хочу иметь отдельные контроллеры, потому что мой API будет воздействовать на совершенно отдельные сторонние приложения через контроллеры.

user3274140 17.04.2018 18:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
1 567
1

Ответы 1

Вам просто нужно установить разные имена bean-компонентов для двух UserController.

Возможный дубликат: Почему я не могу иметь такое же имя контроллера в другом пакете с конфигурацией на основе аннотаций?

Другие вопросы по теме