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: 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 Undertow configureren 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.@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
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; }
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