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.
Erstellen eines benutzerdefinierten Starters mit Spring Boot
Eine schnelle und praktische Anleitung zum Erstellen von benutzerdefinierten Spring Boot-Startern.
Testen im Frühjahr Boot
Erfahren Sie, wie der Spring Boot das Testen unterstützt, um Unit-Tests effizient zu schreiben.
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.