💡 스프링 제대로 공부하는 방법단순히 스프링 기능을 배우고 사용하는 것은 어렵지 않다그러나 IoC, DI 등의 용어 및 SOLID 객체지향 설계 원칙도 이해해야 스프링의 진정한 핵심 가치를 알 수 있게 됨📌 스프링과 객체지향 프로그래밍스프링 컨테이너가 왜 필요할까?
Spring의 핵심 컨셉 > 📌 Spring과 Java > - Spring : Java 언어 기반의 Framework > - Java : 객체 지향 언어라는 특징이 가장 대표적인 프로그래밍 언어 👉🏻 객체 지향 언어가 가진 강력한 특징을 살려내는 Framewo
기능 : 회원 가입, 회원 조회등급 : 일반 회원, VIP 회원 (2가지 등급)회원 데이터는 자체 DB를 구축할 수도 있고, 외부 시스템과 연동할 수도 있다. (미정)회원은 상품을 주문할 수 있다.회원 등급에 따라 할인 정책을 적용할 수 있다.모든 VIP는 1000원을
악덕 기획자 : 고정 금액 할인이 아닌, 10% 정률 할인으로 변경하고자 한다. 📣 참고 : 애자일 소프트웨어 개발 선언RateDiscountPolicy현재의 코드는 OCP, DIP를 위반하고 있다.배우는 본인의 배역을 수행하는 것에만 집중해야 한다.남배우는 어떤 여
제어의 역전Spring에만 국한된 용어는 아님프로그램의 제어 흐름을 직접 제어하는 것이 아니라, 외부에서 관리하는 것ex) AppConfig가 프로그램의 제어 흐름을 가져감📌 Framework vs Library프레임워크 : 내가 작성한 코드를 제어하고, 대신 실행함
스프링 컨테이너ApplicationContext : 스프링 컨테이너@Configuration을 설정(구성) 정보로 사용@Bean이라 적힌 메서드를 모두 호출해서, 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다.스
💡 Singleton Container가 필요한 이유?스프링 없는 순수한 DI 컨테이너 : 요청을 할 때 마다 객체를 새로 생성고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성 / 소멸 : 메모리 낭비👉🏻 해결방안 : 해당 객체가 딱 1개만 생성되고,
스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다.Bean 이름 : 기본설정) 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다.단, 이름을 직접 설정하고 싶으면@Component("memberService2") 처럼 애너테
생성자 주입수정자 주입(setter 주입)필드 주입일반 메서드 주입생성자 호출시점에 딱 1번만 호출되는 것이 보장된다.불변, 필수 의존관계에 사용요즘 가장 많이 쓰임💡 중요!해당 클래스에 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. (물
스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료스프링 빈 : 객체를 생성하고, 의존 관계 주입 후에야 필요한 데이터를 사용할 준비가 제대로 완료됨준비 완료 시점을 알려주기 위한 콜백 메서드 필요함!스
Bean Scope : 빈이 존재할 수 있는 범위 다양한 Scope Singleton 기본 스코프 스프링 컨테이너의 시작과 종료까지 유지되는, 가장 넒은 범위의 스코프 Prototype 스프링 컨테이너는 생성과 의존관계 주입가지만 관여 그 이후는 관