토비의 스프링 STUDY Day 2

머어조·2022년 3월 22일
0

Spring

목록 보기
2/3

스프링 IoC 95p 시작

  • 빈 팩토리 == 애플리케이션 컨텍스트
  • 전자는 빈을 생성하고 관계를 설정하는 IoC기본 기능에 초점
  • 후자는 애플리케이션 전반에 걸쳐 모든 구성 요소 제어 담당
  • context.getBean()은 기본적으로 Object 반환 하지만 제네릭 사용해 어떤 타입이든 상관 없음, 원래는 귀찮게 캐스팅 다해줘야됐음

Client가 UserDao 요청 -> Application Context가 getBean() 조회 -> @Configuration에서 생성 -> Client가 사용

  • DaoFactory vs Application Context
    1. Client가 구체적인 팩토리 클래스를 몰라도된다.
    2. Application Context는 종합 IoC 서비스 제공
    - 오브젝트 후처리기, 인터셉터 등
    3. Application Context는 빈을 검색하는 다양한 방법 제공

  • 동일성은(==) 완전 같다 -> 오브젝트가 하나다
  • 동등성은 equal() 비교같다 -> 메모리에 등록된 오브젝트가 두개

    스프링은 싱글톤 빈을 생성 => 대부분 서버환경에서 실행, 여러 쓰레드에서 하나의 오브젝트를 공유해 동시에 사용하기 떄문에 유리

싱글톤 문제점

  1. private 생성자 때문에 상속 X
  2. 테스트 어려움 (Mock 만들기 어렵)
  3. 서버환경에서는 싱글톤이 만들어지는 것을 보장 X
    • 서버에서 클래스 로더를 어케 구성하느냐에 따라 달라짐
  4. 전역 상태를 만든다. 객체지향에서는 별로 안좋음
  • 스프링이 제공하는 싱글톤 형태 기능은 싱글톤 레지시트다.
    - 평범한 자바클래스를 싱글톤으로 만들어 준다.

싱글톤 사용시 주의점

  • 상태 관리 주의 ( 무상태방식 )
  • 파라미터와 로컬변수, 리턴값으로 극복

  • IoC는 애매한 용어, 스프링만의 차별화된 기능인 의존관계 주입, DI컨테이너라고도 한다.

의존관계 주입 조건

  1. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않음 ( 인터페이스에 의존 )
  2. 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제3의 존재가 결정
  3. 의존관계는 사용할 오브젝트에 대한 래퍼런스를 외부에서 제공해줌으로써 만들어진다.

의존관계 검색(DL)

  • DI는 양쪽다 Bean으로 등록되어있어야됨.
  • DL은 찾는 쪽만 Bean이면됨
profile
너어무 조오아

0개의 댓글

관련 채용 정보