programing

스프링 부트는 @WebServlet을 지원하지 않습니다.

luckcodes 2023. 7. 22. 15:56

스프링 부트는 @WebServlet을 지원하지 않습니다.

저는 서블릿(Http Servlet에서 확장)을 만들고 3.0 사양에 따라 주석을 달았습니다.

@WebServlet(name="DelegateServiceExporter", urlPatterns={"/remoting/DelegateService"})

나의@ConfigurationSpring Boot의 클래스는 이 서블릿의 패키지를 검색합니다.그러나 Spring Boot 응용 프로그램이 시작될 때 내장된 Tomcat 8.0.15 컨테이너에 이 서블릿을 배포한 것으로 기록되지 않습니다.

그래서 제가.@Component내 서블릿에도.이제 Spring Boot은 서블릿을 등록하지만(스캔 패키지가 올바르게 설정되었음을 증명함) Camel 대소문자를 사용하여 클래스 이름을 기준으로 URL 패턴으로 등록합니다.그래서 그게 더 나았어요. 예를 들어 서블릿을 등록했는데 URL 매핑이 잘못됐어요!

2015-01-05 11:29:08,516 INFO  (localhost-startStop-1) [org.springframework.boot.context.embedded.ServletRegistrationBean] Mapping servlet: 'delegateServiceExporterServlet' to [/delegateServiceExporterServlet/]

Spring Boot에서 모든 것을 자동 로드하려면 어떻게 해야 합니까?@WebServlet주석이 달린 서블릿과 그들의 URL 매핑을 존중합니까?

더하다@ServletComponentScan당신의 부트스트랩 수업에서.

예를 들어

@SpringBootApplication
@ServletComponentScan 
public class Application {
   public static void main(String[] args) {
       SpringApplication.run(Application.class, args);
   }
}

이렇게 하면 스프링 부트가 스캔할 수 있습니다.@WebServlet게다가@WebListener.

Spring Boot과 함께 사용해야 합니다.ServletRegistrationBean객체 대신 객체@WebServlet서블릿을 등록하고 URL 패턴을 제공하려는 경우 주석을 입력합니다.

이 콩을 당신의 것에@Configuration수업은 속임수를 써야 합니다.

@Bean
public ServletRegistrationBean delegateServiceExporterServlet() {
    return new ServletRegistrationBean(new DelegateServiceExporter(), "/remoting/DelegateService");
}

주석이 달린 서블릿을 로드할 수 있습니다.@WebServlet스프링 부트에 있는 그들의 매핑.이 작업을 수행하려면 사용해야 합니다.@ServletComponentScan와 함께@Configuration주석이 기능은 다음에도 적용됩니다.@WebFilter그리고.@WebListener주석

언급URL : https://stackoverflow.com/questions/27785935/spring-boot-does-not-honor-webservlet