7

ich ein Servlet erstellt (die sich von HttpServlet) und mit Anmerkungen versehen gemäß 3.0 Spezifikationen mitFrühling Stiefel nicht ehren @WebServlet

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

Meine @Configuration Klasse im Frühjahr Boot-scannt dieses Paket des Servlets. Es wird jedoch nicht protokolliert, dass es dieses Servlet im eingebetteten Tomcat 8.0.15-Container bereitgestellt hat, wenn meine Spring Boot-Anwendung gestartet wird.

Also fügte ich meinem Servlet auch @Component hinzu. Nun registriert Spring Boot das Servlet (was mir beweist, dass das Scan-Paket korrekt eingerichtet wurde), aber dann registriert es es mit einem URL-Muster basierend auf einem Klassennamen unter Verwendung von camel case. Also, das war besser - z. B. habe ich ein Servlet registriert, aber mit den falschen URL-Mappings!

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

Wie erhalte ich Frühling Boot to auto-Last alle @WebServlet kommentierten Servlets und ihre URL-Zuordnungen zu ehren?

+0

Sie nicht. Spring Boot verwendet eine andere Möglichkeit zum Konfigurieren und Zuordnen von Servlets. –

+0

Ich habe [ein Problem] geöffnet (https://github.com/spring-projects/spring-boot/issues/2290), um die Möglichkeit zu besprechen, '@ WebServlet' zu ehren. –

+0

Ich habe es mit dem Rat hier arbeiten. Danke allen! Ich konnte nicht finden, wo die Spring Boot-Dokumentation sagt, dass sie keine WebServlet-Annotation unterstützt, weshalb ich verwirrt war. Wenn ich das Dokument verpasst habe, lass es mich wissen, wo es steht. Andernfalls wäre zumindest eine Aktualisierung der Spring Boot-Dokumentation hilfreich - z. B. explizit, dass die WebServlet-Annotation nicht unterstützt wird. :) – Jason

Antwort

6

Mit Spring Boot sollten Sie das ServletRegistrationBean Objekt anstelle der @WebServlet Annotation verwenden, wenn Sie ein Servlet registrieren und das URL-Muster angeben möchten.

Addiert man diese Bohnen zu Ihrer @Configuration Klasse sollte es tun:

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

Es ist möglich, Servlets mit @WebServlet und ihre Zuordnungen in Spring-Boot kommentierten zu laden. Um dies zu tun, müssen Sie @ServletComponentScan mit @Configuration Annotation verwenden. Dies funktioniert auch für @WebFilter und @WebListener Annotationen.

10

Fügen Sie in Ihrer Bootstrap-Klasse @ServletComponentScan10 hinzu.

wie

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

Dieser Federverschluß ermöglichen @WebServlet sowie @WebListener zu scannen.

+0

Das sollte die akzeptierte Antwort sein. Du bist der beste! – ForNeVeR