[Spring-기본] 스프링 컨테이너와 스프링 빈 - 2

DANI·2023년 11월 23일

Spring[김영한T]

목록 보기
21/31
post-thumbnail

📑 BeanFactory



📑 ApplicationContext

  • ApplicationContext : BeanFactory 뿐만 아니라 다양한 부가기능이 있다
    🔍 : https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContext.html

    • 메세지소스 : 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 / 국제화 기능
    • 환경변수 : 로컬, 개발, 운영등을 구분해서 처리
    • 애플리케이션이벤트 : 이벤트를 발행하고 구독하는 모델을 편리하게 지원
    • 편리한 리소스 기능 조회 : 파일, 클래스패스, 외부등에서 리소스를 편리하게 조회



💡 다양한 설정 형식 : XML, 자바코드 등등


현재까지는 어노테이션을 통해 설정 파일을 만들었다.



🔍 XML 설정파일 만들어보기

💾 config.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.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="discountPolicy" ref="discountPolicy"></constructor-arg>
        <constructor-arg name="memberRepository" ref="memberRepository"></constructor-arg>
    </bean>
    <bean id="discountPolicy" class="hello.core.Discount.RateDiscountPolicy"/>
</beans>

💾 XmlCofigTest 파일 생성

package hello.core;

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

public class XmlCofigTest {

    @Test
    void xmlAppContext(){
        ApplicationContext ac = new GenericApplicationContext("config.xml");
        MemberService memberService = ac.getBean("memberService", MemberService.class);
        Assertions.assertThat(memberService).isInstanceOf(MemberService.class);

    }
}


xml 파일과 어노테이션으로 설정한 파일 유사하다.

0개의 댓글