Konfigurieren Sie eine Spring Boot-Webanwendung

Konfigurieren Sie eine Spring Boot-Webanwendung

1. Überblick

Spring Boot kann viele Dinge tun; In diesem Tutorial gehen wir auf einige der interessanteren Konfigurationsoptionen in Boot ein.

Weitere Lektüre:

Migration von Spring zu Spring Boot

Hier erfahren Sie, wie Sie ordnungsgemäß von einem Spring zu einem Spring Boot migrieren.

Read more

Erstellen eines benutzerdefinierten Starters mit Spring Boot

Eine schnelle und praktische Anleitung zum Erstellen von benutzerdefinierten Spring Boot-Startern.

Read more

Testen im Frühjahr Boot

Erfahren Sie, wie der Spring Boot das Testen unterstützt, um Unit-Tests effizient zu schreiben.

Read more

2. Die Portnummer

In eigenständigen Hauptanwendungen ist der Haupt-HTTP-Port standardmäßig 8080; we can easily configure Boot to use a different port:

server.port=8083

Und für YAML-basierte Konfiguration:

server:
    port: 8083

Wir können den Server-Port auch programmgesteuert anpassen:

@Component
public class CustomizationBean implements
  WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableServletWebServerFactory container) {
        container.setPort(8083);
    }
}

3. Der Kontextpfad

Standardmäßig lautet der Kontextpfad "/". Wenn dies nicht ideal ist und Sie es ändern müssen - in etwas wie /app_name, können Sie dies schnell und einfach über Eigenschaften tun:

server.servlet.contextPath=/springbootapp

Und für die YAML-basierte Konfiguration:

server:
    servlet:
        contextPath:/springbootapp

Schließlich kann die Änderung auch programmgesteuert erfolgen:

@Component
public class CustomizationBean
  implements WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableServletWebServerFactorycontainer) {
        container.setContextPath("/springbootapp");
    }
}

4. Die White-Label-Fehlerseite

Spring Boot registriert automatisch eine`BasicErrorController-Bean, wenn Sie in der Konfiguration keine benutzerdefinierte Implementierung angeben. `++

Dieser Standard-Controller kann jedoch natürlich konfiguriert werden:

public class MyCustomErrorController implements ErrorController {

    private static final String PATH = "/error";

    @GetMapping(value=PATH)
    public String error() {
        return "Error haven";
    }

    @Override
    public String getErrorPath() {
        return PATH;
    }
}

5. Passen Sie die Fehlermeldungen an

Boot bietet standardmäßig/error Zuordnungen, um Fehler auf sinnvolle Weise zu behandeln.

Wenn Sie spezifischere Fehlerseiten konfigurieren möchten, gibt es eine gute Unterstützung für ein einheitliches Java-DSL, um die Fehlerbehandlung anzupassen:

@Component
public class CustomizationBean
  implements WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableServletWebServerFactorycontainer) {
        container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
        container.addErrorPages(new ErrorPage("/errorHaven"));
    }
}

Hier haben wirBad Request speziell so behandelt, dass sie mit dem Pfad von/400übereinstimmen, und alle anderen, um mit dem gemeinsamen Pfad übereinzustimmen.

Und eine sehr einfache Implementierung von/errorHaven:

@GetMapping("/errorHaven")
String errorHeaven() {
    return "You have reached the haven of errors!!!";
}

Ausgabe:

You have reached the haven of errors!!!

6. Fahren Sie eine Boot-Anwendung programmgesteuert herunter

Sie können eine Boot-App mithilfe vonSpringApplication. programmgesteuert herunterfahren. Dies hat eine statischeexit()-Methode, die zwei Argumente akzeptiert:ApplicationContext undExitCodeGenerator:

@Autowired
public void shutDown(ExecutorServiceExitCodeGenerator exitCodeGenerator) {
    SpringApplication.exit(applicationContext, exitCodeGenerator);
}

Über diese Dienstprogrammmethode können wir die App herunterfahren.

7. Konfigurieren Sie die Protokollierungsstufen

Sie können leichttune the logging levels in a Boot application; Ab Version 1.2.0 können Sie die Protokollebene in der Haupteigenschaftendatei konfigurieren:

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

Und genau wie bei einer Standard-Spring-App können Sie verschiedene Protokollierungssysteme wieLogback,log4j,log4j2 usw. aktivieren, indem Sie deren angepasste XML- oder Eigenschaftendatei in den Klassenpfad einfügen und die Bibliotheken definieren im pom.

8. Registrieren Sie ein neues Servlet

Wenn Sie die Anwendung mithilfe des eingebetteten Servers bereitstellen, können Sie neue Servlets in einer Startanwendungby exposing them as beans aus der herkömmlichen Konfiguration registrieren:

@Bean
public HelloWorldServlet helloWorld() {
    return new HelloWorldServlet();
}

Alternativ können SieServletRegistrationBean: verwenden

@Bean
public SpringHelloServletRegistrationBean servletRegistrationBean() {

    SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean(
      new SpringHelloWorldServlet(), "/springHelloWorld/*");
    bean.setLoadOnStartup(1);
    bean.addInitParameter("message", "SpringHelloWorldServlet special message");
    return bean;
}

9. Konfigurieren Sie Jetty oder Undertow in der Boot-Anwendung

Die Spring Boot-Starter verwenden im AllgemeinenTomcat as the default embedded server. Wenn dies geändert werden muss, können Sie die Tomcat-Abhängigkeit ausschließen und stattdessen Jetty oder Undertow einschließen:

Anlegestelle konfigurieren


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
    


    org.springframework.boot
    spring-boot-starter-jetty
@Bean
public JettyEmbeddedServletContainerFactory  jettyEmbeddedServletContainerFactory() {
    JettyEmbeddedServletContainerFactory jettyContainer =
      new JettyEmbeddedServletContainerFactory();

    jettyContainer.setPort(9000);
    jettyContainer.setContextPath("/springbootapp");
    return jettyContainer;
}

Undertow konfigurieren


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
    


    org.springframework.boot
    spring-boot-starter-undertow
@Bean
public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
    UndertowEmbeddedServletContainerFactory factory =
      new UndertowEmbeddedServletContainerFactory();

    factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {
        @Override
        public void customize(io.undertow.Undertow.Builder builder) {
            builder.addHttpListener(8080, "0.0.0.0");
        }
    });

    return factory;
}

10. Fazit

In diesem kurzen Artikel haben wir einige der mehrinteresting and useful Spring Boot configuration options besprochen.

Natürlich gibt es in den Referenzdokumenten viele, viele weitere Optionen zum Konfigurieren und Optimieren einer Boot-App für Ihre Anforderungen - dies sind nur einige der nützlicheren Optionen, die ich gefunden habe.