Courses(72)
-
컴포넌트 스캔
컴포넌트 스캔과 의존관계 자동 주입 코드 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능 제공 의존관계를 자동으로 주입하는 @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 -
객체 지향 설계와 스프링
자바 진영의 추운 겨울과 스프링의 탄생 EJB(Enterprise Java Beans) 2000년대 초반 자바 표준 기술 Entity Bean : ORM 기술 이론이 좋고, 기능이 많았으나 어렵고, 느리고, 비쌈 POJO(Plain Old Java Object) : 순수한 자바로 돌아가자 스프링 EJB 컨테이너 대체 단순함의 승리 현재 사실상 표준 기술 하이버네이트 EJB 엔티티 빈 기술을 대체 JPA(Java Persistence API) 새로운 표준 정의 스프링 역사 2002년 로드 존슨 책 출간 EJB 문제점 지적 EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30000라인 이상의 기반 기술을 예제 코드로 선보임 스프링 핵심 개념과 기반 코드 BeanFacto..
2023.09.26