전체 글(151)
-
의존관계 자동 주입
다양한 의존관계 주입 방법 생성자 주입 생성자를 통해 의존 관계를 주입받는 방법 생성자 호출 시점에 딱 1번만 호출되는 것이 보장 불변, 필수 의존관계에 사용 생성자가 1개만 있으면 @Autowired를 생략해도 자동 주입됨 수정자 주입 setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법 선택, 변경 가능성이 있는 의존관계에 사용 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법 @Autowired의 기본 동작은 주입할 대상이 없으면 오류 발생 주입할 대상이 없어도 동작하게 하려면 @Autowired(required = false) 필드 주입 필드에 바로 주입하는 방법 코드가 간결하지만 외부에서 변경이 불가능해서 테스트하기 힘들다는 단점 존재 DI 프레임워..
2023.09.26 -
컴포넌트 스캔
컴포넌트 스캔과 의존관계 자동 주입 코드 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능 제공 의존관계를 자동으로 주입하는 @Autowired 기능 제공 동작 과정 @ComponentScan @Component가 붙은 모든 클래스를 스프링 빈으로 등록 스프링 빈 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자 사용 ex) MemberServiceImpl 클래스 -> memberServiceImpl 빈 이름 직접 지정 : @Component("beanName") @Autowired 의존관계 자동 주입 생성자에 @Autowired를 지정하면, 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입 기본 조회 전략은 타입이 같은 빈을 찾아서 주입 생성자에 파라미터가 많..
2023.09.26 -
싱글톤 컨테이너
웹 애플리케이션과 싱글톤 순수한 DI 컨테이너 코드 웹 애플리케이션은 보통 여러 고객이 동시에 요청 스프링 없는 순수한 DI 컨테이너는 요청을 할 때마다 객체를 새로 생성 고객 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성되고 소멸됨 -> 메모리 낭비가 심함 싱글톤 패턴을 사용하여 해결 객체를 하나만 생성해서 공유 싱글톤 패턴 싱글톤 패턴 코드 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 static 영역에 객체 인스턴스를 미리 하나 생성해서 올려둔다. getInstance()메서드를 통해서만 조회 가능 private생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 함 싱글톤 패턴 문제점 싱글톤 패턴을 구현하는 코드 자체가 많이 들어감 의존관계상..
2023.09.26 -
스프링 컨테이너와 스프링 빈
스프링 컨테이너 //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext는 인터페이스로 구현체에 따라 XML 또는 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만들 수 있다. 스프링 컨테이너 생성 과정 스프링 컨테이너 생성 new AnnotationConfigApplicationContext(AppConfig.class) 구성 정보 지정 (AppConfig.class) 스프링 빈 등록 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈 등록 빈 이름 메서드 이름을 사용 직접 부여하는 방법 : @Bean(name="b..
2023.09.26 -
객체 지향 원리 적용
정률 할인 기능 추가 코드 문제점 할인 정책을 변경하려면 클라이언트인 OrderServiceImpl 코드를 고쳐야 함 Before : private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); After : private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); OCP 위반 OrderServiceImpl 클래스는 인터페이스인 DiscountPolicy 뿐만 아니라 구체 클래스인 FixDiscountPolicy와 RateDiscountPolicy에도 의존 DIP 위반 구현체 없이는 코드를 실행할 수 없음 구현 객체를 대신 생성하고 주입해 주는 클래스 필요 관심사의 분..
2023.09.26 -
예제 만들기
프로젝트 생성 Project : Gradle - Groovy Language : Java Spring Boot : SNAPSHOT, RC, M 등이 붙지 않은 버전 중 가장 높은 것 Packaging : Jar Project Metadata Group : hello Artifact : core Dependencies : X 스프링 부트 3.0 Java 17 이상을 사용 javax -> jakarta 회원 서비스 구현 코드 테스트 코드 주문 & 할인 서비스 구현 코드 테스트 코드 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! ..
2023.09.26