Joy's Devlog

Joy's Devlog

  • 분류 전체보기 (112)
    • 전공 (33)
      • 네트워크 (14)
      • 운영체제 (12)
      • 컴파일러 (7)
      • 인공지능 (0)
      • 데이터마이닝 (0)
    • BOOKS (44)
      • SQL 전문가 가이드 (30)
      • 이펙티브 자바 (6)
      • Real MySQL 8.0 (8)
    • LECTURES (34)
      • 스프링 핵심 원리 기본편 (9)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 (8)
      • 실전! 스프링 부트와 JPA 활용 (11)
      • 실전! 스프링 데이터 JPA (6)
    • EXPERIENCES (1)
      • ChatGPT 질문 답변 (1)
      • 우리FISA (0)
  • 홈
  • 공지사항
  • 태그
  • 아카이브
  • 방명록
  • GITHUB
RSS 피드
로그인
로그아웃 글쓰기 관리

Joy's Devlog

컨텐츠 검색

태그

정적 유틸리티 클래스 익스텐트 맵 컴파일러 Spring 네트워크 운영체제 동반 클래스 Java gap lock DB 버퍼 캐시 HTTP Effective Java 스토어드 프로그램 쿼리 수행 과정 RealMySQL sqld 데이터통신 MySQL 더티페이지 JPA

최근글

공지사항

아카이브

LECTURES/스프링 핵심 원리 기본편(9)

  • 빈 스코프

    빈 스코프란? 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지되는 이유는 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문 스프링이 지원하는 스코프 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 컴포넌트 스캔 자동 등록 @Scope("prototype") @Compone..

    2023.09.26
  • 빈 생명주기 콜백

    빈 생명주기 콜백 시작 코드 데이터베이스 커넥션 풀이나, 네티워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요 스프링 빈은 객체를 생성하고 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료됨 따라서 초기화 작업은 의존관계 주입이 모두 완료된 후에 호출해야 함 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 줌 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 스프링 빈 생성 의존관계 주입 초기화 콜백 빈이 생성되고, 빈의 의존관계 주입이 완..

    2023.09.26
  • 의존관계 자동 주입

    다양한 의존관계 주입 방법 생성자 주입 생성자를 통해 의존 관계를 주입받는 방법 생성자 호출 시점에 딱 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
  • 객체 지향 설계와 스프링

    자바 진영의 추운 겨울과 스프링의 탄생 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
이전
1
다음
GITHUB
© 2018 TISTORY. All rights reserved.

티스토리툴바