Konfigurer en Spring Boot-webapplikation
1. Oversigt
Spring Boot kan gøre en masse ting; i denne vejledning skal vi gennemgå et par af de mere interessante konfigurationsindstillinger i Boot.
2. Portnummeret
I de vigtigste enkeltstående applikationer er den primære HTTP-port som standard 8080; Vi kan nemt konfigurere Boot til at bruge en anden port:
server.port = 8083
Og til YAML-baseret konfiguration:
server: port: 8083
Vi kan også programmatisk tilpasse serverporten:
@Component public class CustomizationBean implementerer WebServerFactoryCustomizer {@Override public void customize (ConfigurableServletWebServerFactory container) {container.setPort (8083); }}
3. Kontekststien
Som standard er kontekststien “/”. Hvis det ikke er ideelt, og du skal ændre det - til noget som /app_name, her er den hurtige og enkle måde at gøre det på via egenskaber:
server.servlet.contextPath = / springbootapp
Og til YAML-baseret konfiguration:
server: servlet: contextPath: / springbootapp
Endelig - ændringen kan også gøres programmatisk:
@Component public class CustomizationBean implementerer WebServerFactoryCustomizer {@Override public void customize (ConfigurableServletWebServerFactorycontainer) {container.setContextPath ("/ springbootapp"); }}
4. White Label-fejlsiden
Spring Boot registrerer automatisk en BasicErrorController
bean, hvis du ikke angiver nogen brugerdefineret implementering i konfigurationen.
Denne standardcontroller kan dog naturligvis konfigureres:
offentlig klasse MyCustomErrorController implementerer ErrorController {privat statisk endelig streng PATH = "/ fejl"; @GetMapping (værdi = PATH) offentlig Strengfejl () {return "Fejlhaven"; } @ Override public String getErrorPath () {return PATH; }}
5. Tilpas fejlmeddelelserne
Boot giver /fejl kortlægninger som standard for at håndtere fejl på en fornuftig måde.
Hvis du vil konfigurere mere specifikke fejlsider, er der god support til en ensartet Java DSL til at tilpasse fejlhåndtering:
@Component public class CustomizationBean implementerer WebServerFactoryCustomizer {@Override public void customize (ConfigurableServletWebServerFactorycontainer) {container.addErrorPages (new ErrorPage (HttpStatus.BAD_REQUEST, "/ 400")); container.addErrorPages (ny ErrorPage ("/ errorHaven")); }}
Her håndterede vi specifikt Dårlig anmodning at matche /400 sti og alle andre til at matche den fælles sti.
Og en meget enkel / errorHaven implementering:
@GetMapping ("/ errorHaven") String errorHeaven () {return "Du har nået tilflugtsstedet for fejl !!!"; }
Produktion:
Du har nået tilflugtsstedet for fejl !!!
6. Luk en Boot-applikation ned programmatisk
Du kan programmatisk lukke en Boot-app ved hjælp af SpringApplication. Dette har en statisk Afslut() metode, der tager to argumenter: ApplicationContext og en ExitCodeGenerator:
@Autowired public void shutDown (ExecutorServiceExitCodeGenerator exitCodeGenerator) {SpringApplication.exit (applicationContext, exitCodeGenerator); }
Det er gennem denne hjælpemetode, at vi kan lukke appen.
7. Konfigurer logningsniveauerne
Det kan du nemt indstil logningsniveauerne i en Boot-applikation; Fra og med version 1.2.0 og fremefter kan du konfigurere logniveauet i hovedegenskabsfilen:
logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR
Og ligesom med en standard Spring-app - kan du aktivere forskellige logningssystemer som f.eks Logback, log4j, log4j2osv. ved at tilføje deres tilpassede XML- eller egenskabsfil på klassestien og definere bibliotekerne i pom.
8. Registrer en ny servlet
Hvis du implementerer applikationen ved hjælp af den integrerede server, kan du registrere nye Servlets i et Boot-program ved at udsætte dem for bønner fra konventionel konfiguration:
@Bean offentlig HelloWorldServlet helloWorld () {returner nye HelloWorldServlet (); }
Alternativt kan du bruge en ServletRegistrationBean: Spring Boot startere bruger generelt Tomcat som standard integreret server. Hvis det skal ændres, kan du udelukke Tomcat-afhængigheden og inkludere Jetty eller Undertow i stedet: Konfiguration af anløbsbro Konfiguration af Undertow I denne hurtige artikel gik vi over nogle af de mere interessante og nyttige Spring Boot-konfigurationsindstillinger. Der er selvfølgelig mange, mange flere muligheder for at konfigurere og indstille en Boot-app til dine behov i referencedokumenterne - disse er bare nogle af de mere nyttige, jeg fandt.@Bean public SpringHelloServletRegistrationBean servletRegistrationBean () {SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean (new SpringHelloWorldServlet (), "/ springHelloWorld / *"); bean.setLoadOnStartup (1); bean.addInitParameter ("besked", "SpringHelloWorldServlet speciel besked"); retur bønne; }
9. Konfigurer anløbsbro eller Undertow i Boot Application
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 = ny JettyEmbeddedServletContainerFactory (); jettyContainer.setPort (9000); jettyContainer.setContextPath ("/ springbootapp"); returbrygge Container; }
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 fabrik = ny UndertowEmbeddedServletContainerFactory (); factory.addBuilderCustomizers (ny UndertowBuilderCustomizer () {@Override public void customize (io.undertow.Undertow.Builder builder) {builder.addHttpListener (8080, "0.0.0.0");}}); retur fabrik; }
10. Konklusion