0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spring Container

Last updated at Posted at 2023-10-24
  • 従来は開発者がAppConfigを使用して直接オブジェクトを生成し依存性を注入していましたが、これからはSpringContainerを使う。
  • 一般的にApplicationContext(インターフェース、多形性が適用される)をSpringContainerという。
    • BeanFactoryもあるが、直接使用する場合はほとんどないためだ。
  • XML ベースまたはAnnotation ベースのJava設定クラス、Groovy など、さまざまな形式の設定情報が受け入れられるよう柔軟に立つようになっている。
    스크린샷 2023-09-10 19.02.08 (1).png

最近では、AnotationベースのJava設定クラスを活用した方法を多く使用し、その他多く使用される方法としてはXMLを使用した方法がある。

< XML を使って作成 >

  • レガシープロジェクトがXMLになっている場合も多く、コンパイルなしでBean設定情報を変更できるメリットもあるので、学んでおくとよい。
  • Generic Xml Application Contextを使用しながら、xml設定ファイルをめくるとよい。

appConfig.xml

<?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.hellospring.member.MemberServiceImpl">
        <constructor-arg name="memberRepository" ref="memberRepository"/>
    </bean>

    <bean id="memberRepository" class="hello.hellospring.member.MemoryMemberRepository">
    </bean>

    <bean id="orderService" class="order.OrderServiceImpl">
        <constructor-arg name="memberRepository" ref="memberRepository"></constructor-arg>
        <constructor-arg name="disCountPolicy" ref="discountPolicy"></constructor-arg>
    </bean>

    <bean id="discountPolicy" class="discount.RateDiscountPolicy">
    </bean>


</beans>
package hello.hellospring;


import hello.hellospring.member.MemberService;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class XmlApplicationContextTest {

    @Test
    void test1() {
        ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml");
        MemberService memberService = ac.getBean("memberService", MemberService.class);
        Assertions.assertThat(memberService).isInstanceOf(MemberService.class);
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?