Faster startup time by avoiding class-path scanning

Disables Spring's built-in ServletContainerInitializer which uses WebApplicationInitializer SPI that is discovered via slow class-path scanning. Now directly, and only, call the SpringBootServletInitializer via our own ServletContainerInitializer instead.

Be mindful if, in the future, we rely on other WebApplicationInitializers that will now not be run.
This commit is contained in:
Andreas Svanberg 2024-05-16 23:43:21 +02:00
parent 4d96fc4671
commit 807d6764af
3 changed files with 12 additions and 4 deletions
war/src/main
java/se/su/dsv/scipro/war
resources/META-INF/services
webapp/WEB-INF

@ -2,6 +2,9 @@ package se.su.dsv.scipro.war;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.servlet.ServletContainerInitializer;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.WicketFilter;
import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
@ -35,7 +38,12 @@ import java.util.Set;
@SpringBootApplication
@EntityScan("se.su.dsv.scipro")
@Import({CoreConfig.class, ApiConfig.class})
public class Main extends SpringBootServletInitializer {
public class Main extends SpringBootServletInitializer implements ServletContainerInitializer {
@Override
public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
onStartup(ctx);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Main.class);

@ -5,9 +5,8 @@
<display-name>SciPro</display-name>
<listener>
<listener-class>org.springframework.web.SpringServletContainerInitializer</listener-class>
</listener>
<!-- disables Spring's built in ServletContainerInitializer which causes a slow class path scanning -->
<absolute-ordering/>
<session-config>
<session-timeout>480</session-timeout>