.
package com.hello;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Bean;
import com.hello.discount.DiscountPolicy;
import com.hello.discount.RateDiscountPolicy;
import com.hello.member.MemberRepository;
import com.hello.member.MemberService;
import com.hello.member.MemberServiceImp;
import com.hello.member.MemoryMemberRepository;
import com.hello.order.OrderService;
import com.hello.order.OrderServiceImpl;
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImp(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discounPolicy());
}
@Bean
public DiscountPolicy discounPolicy() {
return new RateDiscountPolicy();
}
}
<?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="com.hello.member.MemberServiceImp">
<!-- 생성자를 파라미터를 통한 의존성 주입 -->
<constructor-arg name="memberRepository"
ref="memberRepository"></constructor-arg>
</bean>
<bean id="memberRepository"
class="com.hello.member.MemoryMemberRepository"></bean>
<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>
'백엔드개발자 > SPRING, JPA 등...' 카테고리의 다른 글
@Configuration과 싱글톤 / 바이트코드 조작 (0) | 2022.01.23 |
---|---|
싱글톤/ 싱글톤 컨테이너 (0) | 2022.01.16 |
스프링 컨테이너와 스프링 빈/ 빈 조회하기 (0) | 2022.01.13 |
스프링으로 전환(AppConfig, OrderApp, MemberApp...)과 스프링컨테이너 (0) | 2022.01.11 |
IOC, DI, 제어의역전 (0) | 2022.01.11 |