2017-01-08 3 views
0

Я пытаюсь создать сервис RESTful, используя весеннюю паутину. У меня есть контроллер, который имеет обычную структуруКонтроллеры пружины не найдены

package com.hcl.bc4sc.server.controller; 
... 
@RestController 
@RequestMapping("/api/v1/registrar/enroll") 
public class ControllerV1RegistrarEnroll { 
... 
    @RequestMapping(method = RequestMethod.POST, consumes = "application/json") 
    public Mono<ResponseEntity> registrarEnrollPost(@RequestBody final UserInfo userInfo) { 
... 

Я использую @ComponentScan, чтобы контроллер зарегистрирован как этот

@Configuration 
@ComponentScan(basePackages = "com.hcl.bc4sc.server.controller") 
public class ServerInitialization { 
... 

Различные бобы в моем классе ServerInitialization в настоящее время определены, так что я знаю, что ServerInitialization обрабатывается Spring.

мне интересно, если проблема может быть с тем, как я начинаю весной и HttpServer так:

public static void boot() throws TimeoutException { 
    final GenericApplicationContext context 
      = new AnnotationConfigApplicationContext(DelegatingWebReactiveConfiguration.class, 
                ServerInitialization.class); 
    final HttpHandler handler = DispatcherHandler.toHttpHandler(context); 
    final ServerConfig config = context.getBean(ServerConfig.class); 
    applicationContext = Optional.of(context); 

    // Reactor Netty 
    final Function<HttpChannel, Mono<Void>> adapter 
      = new ReactorHttpHandlerAdapter(handler); 
    final HttpServer server = HttpServer.create(config.getHost(), config.getPort()); 
    httpServer = Optional.of(server); 
    server.ws("", adapter).startAndAwait(); 
} 

Когда я пытаюсь проверить это я использую URL http://localhost/api/v1/registrar/enroll. Он возвращает 404.

Если я должен начать свою службу по-другому, может кто-нибудь, пожалуйста, указать мне на хороший полный рабочий пример?

ответ

0

В соответствии с кодом вы упомянули в вопросе, контроллер находится в

com.hcl.bc4sc.server.config 

Но сканирование вы делаете для упаковки:

com.hcl.bc4sc.server.controller 

Вы должны сначала исправить эту неоднозначность. И пусть знает, все еще не удается. Журналы запуска могут помочь.

+0

Мне было очень поздно, когда я вставлял листинг в это сообщение. В моем нерабочем коде имена пакетов совпадают. Я скорректировал листинг. Контроллер действительно находится в пакете 'com.hcl.bc4sc.server.controller'. – user2102276

Смежные вопросы