スプリングbeanをxmlで登録


📖 ✏️

  • TILシリーズの記事は「毎日学ぶ知識のかけらを記録する」です.これは、共有ではなく個人学習を記録するために作成されます.
  • の他のシリーズで作成された共有用のロケーションは、いつでも個別に作成されます.主に、TILシリーズで作成されたコンテンツから特定のトピックを選択し、より深い学習とまとめを行います.
  • Spring beanをxmlで登録



    スプリング容器は、スプリングbeanを様々な形態で登録できるように設計されている.bean登録は主に1)宣言ベースjavaコードを使用する方法と2)xmlファイルを使用する方法を採用する.必要に応じて、独自のプロファイルを作成することもできます.最近xmlはあまり使われていませんが、古いプロジェクトを維持する必要がある場合は、このような状況が頻繁に発生する可能性があります.

    1.匿名ベースjavaコード設定方式


    シミュレーションを使用したjavaコードの設定方式は、現在最も一般的な方法です.new AnnotationConfigApplicationContext("설정할 클래스 이름".class)を使用して、設定するクラスをパラメータに入れます.

    2.xml設定方式


    最近,Spring Bootを用いたアプリケーション開発が主流となり,xmlベースの設定方法は適用されなくなった.しかし、従来のプロジェクトの多くはxmlであるため、xmlを使用するbean登録方法を理解することが望ましい.
    またxml方式の利点は,コンパイルを必要とせずにbean設定情報を変更できることであるため,必要に応じて利用できる必要がある.
    宣言に基づくjavaコード設定方式はApplicationContextを実装体とし、xml方式はAnnotationConfigApplicationContext実装体とする.

    2-1. Xmlを使用してbeanを登録する

    GenericXmlApplicationContextの発現体は、ApplicationContextを用いる.
    public class XmlAppContext {
        
        @Test
        void xmlAppContext() {
            ApplicationContext ac = new GenericXmlApplicationContext("AppConfig.xml");
            MemberService memberService = ac.getBean("memberService", MemberService.class);
            Assertions.assertThat(memberService).isInstanceOf(MemberService.class);
        }
    }
    XMLファイルはresourcesディレクトリに作成する必要があります.
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="memberService" class="hello.core.member.MemberServiceImpl">
            <constructor-arg name="memberRepository" ref="memberRepository"/>
        </bean>
    
        <bean id="memberRepository" class="hello.core.member.MemoryMemberRepository"/>
    
        <bean id="orderService" class="hello.core.order.OrderServiceImpl">
            <constructor-arg name="memberRepository" ref="memberRepository"/>
            <constructor-arg name="discountPolicy" ref="discountPolicy"/>
        </bean>
        
        <bean id="discountPolicy" class="hello.core.discount.RateDiscountPolicy"/>
    
    </beans>
    GenericXmlApplicationContextベースのxmlスプリングプロファイルはjavaコードのappConfig.xmlプロファイルクラスと比較され、その構造は基本的に類似している.ただ形が少し違うだけです.