SpringBootでのXML定義のBean

1.はじめに

Spring 3.0以前は、Beanを定義および構成する唯一の方法はXMLでした。Spring 3.0ではJavaConfigが導入され、Javaクラスを使用してBeanを構成できるようになりました。ただし、XML構成ファイルは現在でも使用されています。

このチュートリアルでは、XML構成をSpringBootに統合する方法について説明します。

2. @ ImportResourceアノテーション

@ImportResourceの注釈は、私たちはBean定義を含む1つ以上のリソースをインポートすることができます。

Beanの定義を含むbeans.xmlファイルがあるとしましょう。

Spring Bootアプリケーションで使用するには、@ ImportResourceアノテーションを使用して、構成ファイルの場所を指定します。

@Configuration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { @Autowired private Pojo pojo; public static void main(String[] args) { SpringApplication.run(SpringBootXmlApplication.class, args); } }

この場合、Pojoインスタンスにはbeans.xmlで定義されたBeanが注入されます。

3.XML構成のプロパティへのアクセス

XML構成ファイルでプロパティを使用するのはどうですか?application.propertiesファイルで宣言されたプロパティを使用するとします。

sample=string loaded from properties!

サンプルプロパティを含めるために、beans.xmlのPojo定義を更新しましょう。

次に、プロパティが適切に含まれているかどうかを確認しましょう。

@RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBootXmlApplication.class) public class SpringBootXmlApplicationIntegrationTest { @Autowired private Pojo pojo; @Value("${sample}") private String sample; @Test public void whenCallingGetter_thenPrintingProperty() { assertThat(pojo.getField()) .isNotBlank() .isEqualTo(sample); } }

残念ながら、デフォルトではXML構成ファイルはプレースホルダーを解決できないため、このテストは失敗します。ただし、@ EnableAutoConfigurationアノテーションを含めることでこれを解決できます。

@Configuration @EnableAutoConfiguration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { // ... }

このアノテーションは自動構成を有効にし、Beanの構成を試みます。

4.推奨されるアプローチ

XML構成ファイルを引き続き使用できます。ただし、いくつかの理由から、すべての構成をJavaConfigに移動することも検討できます。まず、JavaでBeanを構成することはタイプセーフであるため、コンパイル時にタイプエラーをキャッチします。また、XML構成は非常に大きくなる可能性があり、保守が困難になります。

5。結論

この記事では、XML構成ファイルを使用してSpringBootアプリケーションでBeanを定義する方法について説明しました。いつものように、使用した例のソースコードはGitHubで入手できます。