TIL

185일차(모험 94일차) - 다양한 설정 형식 지원 - 자바 코드, XML

haedal-uni 2022. 3. 18. 10:17
728x90

[add] 다양한 설정 형식 지원 - 자바 코드, XML [#13] #19

이 전까지는 자바 코드로 설정하는 법을 배웠는데 이번에는 XML로 설정하는 법을 배워봤다.

(아 이렇게 동작하는 구나 정도로만 알면 될듯하다.)

 

 

다양한 설정 형식 지원

 

ApplicationContext를 구현한 것 중에 하나가 이 전에 사용했던

AnnotationConfig 설정 정보를 사용하는 ApplicationContext 라고 보면 된다.

(AppConfig class를 사용함)

- 주로 사용

 

 

ApplicationContext를 구현한 것 중에 GenericXml ApplicationContext도 있다.

자바 코드가 아니라 xml이라는 문서를 설정 정보로 사용한다.

 


 

어노테이션 기반 자바 코드 설정 사용

new AnnotationConfigApplicationContext(AppConfig.class)

AnnotationConfigApplicationContext 클래스를 사용하면서 자바 코드로된 설정 정보를 넘기면 된다.

 

 


 

XML 설정 사용 잘 사용 안함

XML을 사용하면 컴파일 없이 빈 설정 정보를 변경할 수 있는 장점

 

XmlAppContext 작성 후 appConfig.xml을 만들어준다.

xml은 resources 밑에 둔다. (자바 코드가 아닌 경우 모두 resource 아래에)

appConfig.xml 만들기

 

 

AppConfig에 빈으로 등록한 코드

@Bean // 스프링 컨테이너에 등록
public MemberService memberService() {
    return new MemberServiceImpl(memberRepository());
}

@Bean
public MemberRepository memberRepository() {
    return new MemoryMemberRepository();
}

=

<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="memberRepository" class="hello.core.member.MemoryMemberRepository"/>

memberRepository가

 

<bean id="memberService" class="hello.core.member.MemberServiceImpl">
    <constructor-arg name="memberRepository" ref="memberRepository"/>
</bean>

 

ref로 생성자에서 넘어간다.

 

실제 구현 객체는 MemoryMemberRepository

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

 

728x90