Spring 공부

스프링 기본편 정리2

키스샷1104 2023. 11. 1. 22:17

이번에는 수동으로 빈에 등록해서 써보겠다.

 

@Configuration
public class BeanConfig {

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

    @Bean
    public DiscountPolicy discountPolicy() {
        return new FixDiscountPolicy();
    }

    @Bean
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(memberService(), discountPolicy());
    }

}
public class MemberApp {

    public static void main(String[] args) {

        ApplicationContext ac = new AnnotationConfigApplicationContext(BeanConfig.class);

        MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class);

        DiscountPolicy discountPolicy = ac.getBean(DiscountPolicy.class);

        MemberService memberService = ac.getBean(MemberServiceImpl.class);

        OrderService orderService = ac.getBean("orderService", OrderService.class);

        Member vipMember = new Member(1L, "memberA", Grade.VIP);
        memberService.join(vipMember);
        Member findMember = memberService.findMember(1L);
        System.out.println("new member = " + vipMember.getName());
        System.out.println("find Member = " + findMember.getName());

        Member basicMember = new Member(2L, "memberB", Grade.BASIC);
        memberService.join(basicMember);
        findMember = memberService.findMember(2L);
        System.out.println("new member = " + basicMember.getName());
        System.out.println("find Member = " + findMember.getName());
        
        Menu ramen = new ShinRamen();
        ramen = new Egg(ramen);
        ramen = new Egg(ramen);

        System.out.println("Items : " + ramen.getItemName());
        System.out.println("Cost : " + ramen.getCost());

        findMember = memberService.findMember(1L);
        Order vipOrder1 = orderService.createOrder(findMember.getId(), ramen.getItemName(), ramen.getCost());
        System.out.println("order = " + vipOrder1);

        findMember = memberService.findMember(2L);
        Order basicOrder2 = orderService.createOrder(findMember.getId(), ramen.getItemName(), ramen.getCost());
        System.out.println("order = " + basicOrder2);
    }
}

BeanConfig클래스를 하나 만들고

main부분만 조금 수정해주면 된다. 

다음은 Autowired를 사용해 볼것이다.