Spring Boot Webアプリケーションを設定する

Spring Boot Webアプリケーションを構成する

1. 概要

SpringBootは多くのことを実行できます。このチュートリアルでは、Bootのより興味深い構成オプションのいくつかについて説明します。

参考文献:

SpringからSpring Bootへの移行

SpringからSpring Bootに適切に移行する方法をご覧ください。

Spring Bootでカスタムスターターを作成する

カスタムSpring Bootスターターを作成するための迅速かつ実用的なガイド。

Spring Bootでのテスト

ユニットテストを効率的に記述するために、Spring Bootがテストをサポートする方法について学びます。

2. ポート番号

メインのスタンドアロンアプリケーションでは、メインのHTTPポートのデフォルトは8080です。 we can easily configure Boot to use a different port

server.port=8083

そして、YAMLベースの設定の場合:

server:
    port: 8083

サーバーポートをプログラムでカスタマイズすることもできます。

@Component
public class CustomizationBean implements
  WebServerFactoryCustomizer {

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

3. コンテキストパス

デフォルトでは、コンテキストパスは「/」です。 それが理想的ではなく、/app_nameのようなものに変更する必要がある場合は、プロパティを介してすばやく簡単に行う方法を次に示します。

server.servlet.contextPath=/springbootapp

また、YAMLベースの構成の場合:

server:
    servlet:
        contextPath:/springbootapp

最後に、変更はプログラムによっても実行できます。

@Component
public class CustomizationBean
  implements WebServerFactoryCustomizer {

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

4. ホワイトラベルエラーページ

構成でカスタム実装を指定しない場合、Spring Bootは自動的に`BasicErrorControllerBeanを登録します。 `++

ただし、このデフォルトのコントローラーはもちろん設定可能です:

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. エラーメッセージをカスタマイズする

Bootは、エラーを適切な方法で処理するために、デフォルトで/errorマッピングを提供します。

より具体的なエラーページを構成する場合は、エラー処理をカスタマイズするための統一されたJavaDSLが適切にサポートされています。

@Component
public class CustomizationBean
  implements WebServerFactoryCustomizer {

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

ここでは、/400パスに一致するようにBad Requestを処理し、共通パスに一致するように他のすべてを処理しました。

そして、非常に単純な/errorHavenの実装:

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

出力:

You have reached the haven of errors!!!

6. プログラムでブートアプリケーションをシャットダウンする

SpringApplication.を使用して、プログラムでブートアプリをシャットダウンできます。これには、ApplicationContextExitCodeGeneratorの2つの引数を取る静的なexit()メソッドがあります。

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

このユーティリティメソッドを使用して、アプリをシャットダウンできます。

7. ロギングレベルを設定する

簡単にtune the logging levels in a Boot applicationできます。バージョン1.2.0以降では、メインプロパティファイルでログレベルを構成できます。

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

また、標準のSpringアプリと同様に、カスタマイズされたXMLまたはプロパティファイルをクラスパスに追加してライブラリを定義することで、Logbacklog4jlog4j2などのさまざまなログシステムをアクティブ化できます。ポンで。

8. 新しいサーブレットを登録する

組み込みサーバーを使用してアプリケーションをデプロイする場合は、従来の構成からブートアプリケーションby exposing them as beansに新しいサーブレットを登録できます。

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

または、ServletRegistrationBean:を使用することもできます

@Bean
public SpringHelloServletRegistrationBean servletRegistrationBean() {

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

9. ブートアプリケーションでJettyまたはUndertowを構成する

Spring Bootスターターは通常Tomcat as the default embedded serverを使用します。 変更が必要な場合は、Tomcat依存関係を除外して、代わりにJettyまたはUndertowを含めることができます。

Jettyの構成


    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の構成


    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. 結論

この簡単な記事では、さらにいくつかのinteresting and useful Spring Boot configuration optionsについて説明しました。

もちろん、参照ドキュメントには、ブートアプリを構成してニーズに合わせて調整するための多くのオプションがあります。これらは、私が見つけたより便利なものの一部にすぎません。