Добавить пользовательский @Controller в оверлей Maven?
Я работаю над реализацией https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server, которая рекомендует расширять и настраивать проект с помощью наложения Maven. Я следовал инструкциям, затем добавил следующий код webapp-overlay/src/main/java/controller/HealthcheckController.java
package controller;
import org.springframework.context.annotation.Primary;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@Primary
public class HealthcheckController {
@RequestMapping(value = "/healthcheckwebapp", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
public String getHealthCheck() {
return "200 OK";
}
}
Тем не менее, я получаю 404, когда на самом деле пытаюсь добраться до маршрута. Я делаю что-то неправильно?
2 ответа
Он отправляет 404, потому что ищет шаблон с именем "200 ok", если вы хотите дать ответ, используйте @ResponseStatus(HttpStatus.OK) и используйте return для перенаправления в другое место, например return "/index"; чтобы избежать ошибки 404
я надеюсь, что это поможет, потому что я не полностью понял ваш вопрос
На вашем оверлее server-config.xml добавьте этот bean-компонент
<context:component-scan base-package="controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller.HealthcheckController " />
</context:component-scan>
И добавьте @ResponseBody
аннотация к getHealthCheck()
Я только что прочитал ваш ответ, в этом случае вам просто нужно изменить @Controller на @RestController, в этом случае вам не нужно тело ответа, что-то вроде этого.
import org.springframework.context.annotation.Primary;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Primary
public class Rest {
@RequestMapping("/healthcheckwebapp")
public String getHealthCheck() {
return "200 OK";
}
}