Configureer een Spring Boot-webtoepassing

1. Overzicht

Spring Boot kan veel dingen doen; in deze tutorial gaan we enkele van de interessantere configuratie-opties in Boot bespreken.

2. Het poortnummer

In de belangrijkste zelfstandige toepassingen is de standaard HTTP-poort 8080; we kunnen Boot eenvoudig configureren om een ​​andere poort te gebruiken:

server.port = 8083

En voor, op YAML gebaseerde configuratie:

server: poort: 8083

We kunnen de serverpoort ook programmatisch aanpassen:

@Component openbare klasse CustomizationBean implementeert WebServerFactoryCustomizer {@Override openbare leegte aanpassen (ConfigurableServletWebServerFactory-container) {container.setPort (8083); }}

3. Het contextpad

Standaard is het contextpad "/". Als dat niet ideaal is en u het moet veranderen - in zoiets als /applicatie naam, hier is de snelle en eenvoudige manier om dit te doen via eigenschappen:

server.servlet.contextPath = / springbootapp

En voor op YAML gebaseerde configuratie:

server: servlet: contextPath: / springbootapp

Eindelijk - de wijziging kan ook programmatisch worden gedaan:

@Component public class CustomizationBean implementeert WebServerFactoryCustomizer {@Override public void adjust (ConfigurableServletWebServerFactorycontainer) {container.setContextPath ("/ springbootapp"); }}

4. De White Label-foutpagina

Spring Boot registreert automatisch een BasicErrorController bean als u geen aangepaste implementatie opgeeft in de configuratie.

Deze standaardcontroller kan natuurlijk worden geconfigureerd:

openbare klasse MyCustomErrorController implementeert ErrorController {private static final String PATH = "/ error"; @GetMapping (waarde = PATH) public String error () {return "Error haven"; } @Override public String getErrorPath () {return PATH; }}

5. Pas de foutmeldingen aan

Boot biedt /fout standaard toewijzingen om fouten op een verstandige manier af te handelen.

Als u meer specifieke foutpagina's wilt configureren, is er goede ondersteuning voor een uniforme Java DSL om foutafhandeling aan te passen:

@Component public class CustomizationBean implementeert WebServerFactoryCustomizer {@Override public void adjust (ConfigurableServletWebServerFactorycontainer) {container.addErrorPages (nieuwe ErrorPage (HttpStatus.BAD_REQUEST, "/ 400")); container.addErrorPages (nieuwe ErrorPage ("/ errorHaven")); }}

Hier hebben we specifiek afgehandeld Foute aanvraag passend bij de /400 pad en alle andere die overeenkomen met het gemeenschappelijke pad.

En een heel simpel / errorHaven implementatie:

@GetMapping ("/ errorHaven") String errorHeaven () {return "Je hebt de oase van fouten bereikt !!!"; }

Uitgang:

Je hebt de oase van fouten bereikt !!!

6. Sluit een opstarttoepassing programmatisch af

U kunt een Boot-app programmatisch afsluiten met behulp van SpringApplication. Dit heeft een statisch Uitgang() methode waaraan twee argumenten moeten doorgegeven worden: de ApplicationContext en een ExitCodeGenerator:

@Autowired openbare leegte shutDown (ExecutorServiceExitCodeGenerator exitCodeGenerator) {SpringApplication.exit (applicationContext, exitCodeGenerator); }

Via deze hulpprogramma-methode kunnen we de app afsluiten.

7. Configureer de registratieniveaus

U kunt gemakkelijk Stem de logboekregistratieniveaus af in een opstarttoepassing; Vanaf versie 1.2.0 en hoger, kunt u het logniveau configureren in het hoofdeigenschappenbestand:

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

En net als bij een standaard Spring-app, kunt u verschillende logboeksystemen activeren, zoals Log terug, log4j, log4j2, etc door hun aangepaste XML- of eigenschappenbestand toe te voegen aan het klassenpad en de bibliotheken in het pom.

8. Registreer een nieuwe servlet

Als u de applicatie implementeert met behulp van de embedded server, kunt u nieuwe Servlets registreren in een Boot-applicatie door ze bloot te stellen als bonen van conventionele configuratie:

@Bean openbaar HelloWorldServlet helloWorld () {retourneer nieuwe HelloWorldServlet (); }

Als alternatief kunt u een ServletRegistrationBean:

@Bean openbaar SpringHelloServletRegistrationBean servletRegistrationBean () {SpringHelloServletRegistrationBean bean = nieuw SpringHelloServletRegistrationBean (nieuw SpringHelloWorldServlet (), "/ springHelloWorld / *"); bean.setLoadOnStartup (1); bean.addInitParameter ("message", "SpringHelloWorldServlet speciaal bericht"); terugkeer boon; }

9. Configureer Jetty of Undertow in Boot Application

De Spring Boot-starters gebruiken over het algemeen Tomcat als de standaard embedded server. Als dat moet worden gewijzigd, kunt u de Tomcat-afhankelijkheid uitsluiten en in plaats daarvan Jetty of Undertow opnemen:

Jetty configureren

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-steiger 
@Bean openbare JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory () {JettyEmbeddedServletContainerFactory jettyContainer = nieuwe JettyEmbeddedServletContainerFactory (); jettyContainer.setPort (9000); jettyContainer.setContextPath ("/ springbootapp"); retour jettyContainer; }

Undertow configureren

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-onderstroom 
@Bean openbaar UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory () {UndertowEmbeddedServletContainerFactory fabriek = nieuwe UndertowEmbeddedServletContainerFactory (); factory.addBuilderCustomizers (nieuwe UndertowBuilderCustomizer () {@Override publieke leegte aanpassen (io.undertow.Undertow.Builder builder) {builder.addHttpListener (8080, "0.0.0.0");}}); terugkeer fabriek; }

10. Conclusie

In dit korte artikel hebben we enkele van de meer besproken interessante en nuttige Spring Boot-configuratie-opties.

Er zijn natuurlijk veel, veel meer opties om een ​​Boot-app te configureren en af ​​te stemmen op uw behoeften in de referentiedocumenten - dit zijn slechts enkele van de nuttiger die ik vond.


$config[zx-auto] not found$config[zx-overlay] not found