Spring Boot Webアプリケーションを構成する
1. 概要
SpringBootは多くのことを実行できます。このチュートリアルでは、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.を使用して、プログラムでブートアプリをシャットダウンできます。これには、ApplicationContextとExitCodeGeneratorの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またはプロパティファイルをクラスパスに追加してライブラリを定義することで、Logback、log4j、log4j2などのさまざまなログシステムをアクティブ化できます。ポンで。
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について説明しました。
もちろん、参照ドキュメントには、ブートアプリを構成してニーズに合わせて調整するための多くのオプションがあります。これらは、私が見つけたより便利なものの一部にすぎません。