2024/07/17 3

[Spring] 스프링 컨테이너와 빈

스프링 컨테이너와 빈스프링 컨테이너 생성스프링 컨테이너가 생성되는 과정을 알아보자.//스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);ApplicationContext 를 스프링 컨테이너라 한다.ApplicationContext 는 인터페이스이다.스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다.자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext )를 만들어보..

[Spring] 스프링 핵심 원리 이해 2_2 - IoC, DI, 그리고 컨테이너, 스프링으로 전환

IoC, DI, 그리고 컨테이너, 스프링으로 전환제어의 역전 IoC(Inversion of Control)보통 개발자가 직접 원하는대로 객체를 생성하고 호출하고 그 안에서 생성, 호출… 다 컨트롤 하고 제어하는 스타일로 개발을 하는데제어의 역전이라는 개념은 내가 뭔가 호출하는게 아니라 프레임워크 같은게 내 코드를 대신 호출해준다. 제어권이 뒤바뀐다고 해서 제어의 역전이라고 한다기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 개발자 입장에서는 자연스러운 흐름이다.반면에 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 App..

[Spring] 스프링 핵심 원리 이해 2_1 - 객체 지향 원리 적용

스프링 핵심 원리 이해2 - 객체 지향 원리 적용새로운 할인 정책 개발새로운 할인 정책을 확장해보자.주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가하자.RateDiscountPolicy 코드package hello.core.discount;import hello.core.member.Grade;import hello.core.member.Member;public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.getGrade() == G..