HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🚀
Random Bit Flip
/
🚀
[2기 - 레이] 3주차 RBF
/
키워드 관련 작성 - 유도진

키워드 관련 작성 - 유도진

  • Entity / Value Object (+ DTO, DAO 등등의 용어?)
    • Entity : 식별자를 가지고 있는 객체, 시간에 따라 변경이 발생한다.
    • Value Object : 식별자를 가지지 않는 객체, 값이 변경되지 않는다.
    • Data Transfer Object : 계층간 통신을 위한 데이터 객체
    • Data Access Object : 데이터베이스의 데이터에 접근하기 위한 객체 Database를 위한 로직과 비즈니스 로직을 구분하기 위해서
  • Dependency (+ Injection)
    • 의존이란? 기능 구현을 위한 다른 구성 요소들을 사용하는 것
      • 이때 사용이란 객체 생성, 메소드 호출, 데이터 사용 등
    • 의존은 하면 변경이 전파될 가능성을 의미!
      • ex) 호출하는 메소드의 파라미터가 변경, 발생하는 예외타입 변경
    • 단단한 결합도와 느슨한 결합도
      • 단단한 결합도 : Compile 시점에 의존성 생성
      • 느슨한 결합도 : Runtile 시점에 의존성 생성
    • 응집도와 결합도
      • 응집도(Cohesion)
        • 모듈에 포함된 내부 요소들이 연간돼 있는 정도
        • 변경이 발생할 때 모듈 내부에서 발생하는 변경의 정도
        • 변경의 많다면 응집도가 높은 것!
      • 결합도(Coupling)
        • 다른 모듈에 대해서 얼마나 많은 지식을 갖고 있는 지를 나타냄
        • 한 모듈이 변경되기 위해서 다른 모듈의 변경을 요구하는 정도
        • 결합도가 높을수록 변경해야하는 모듈의 수가 늘어나 변경이 어려워 진다.
      • 좋은 설계는 높은 응집도와 낮은 결합도를 가져야 한다.
    • 의존성 주입(DI)
      • IoC를 구현하는 방법 중 하나
      • 구현 방법
          1. 생성자
          1. setter
          1. field
      • 생성자를 권장함.
        • null을 주입하지 않는 한 NPE가 발생하지 않는다.
        • final을 사용할 수 있어서 생성 이후 변경되지 않는다.
        • 생성자에 의존 객체를 넣지 않으면 객체가 생성되지 않는다.
        • 순환 의존성을 컴파일 단계에서 확인할 수 있다.
      • 혹시나 변경이 필요할 수 있다면 Setter를 고려해볼 수도 있다?
      • Autowired Annotation이 Spring 4.3 이후로 Default
      • 여러 개 구현체가 있다면 primary를 이용한 우선순위나 Qualifer를 통한 네이밍 추가가 가능하다.
    • 순환 의존
      • 의존 객체들의 의존 관계가 순환되는 경우
      • 해결 방법이 뭐지?
  • IoC(Inversion Of Control)
    • 애플리케이션 코드가 프레임워크가 짜놓은 틀에서 수동적으로 동작
      • The Hollywoord Principle
    • Context는 객체의 생성, 연관관계를 담당
      • Context는 IoC가 일어나는 공간으로 IoC Container라고 한다.
      • Spring에서는 Application Context를 이용한다.
    • IoC를 구현하는 방법
      • 전략패턴 / 서비스 로케이터 패턴/ 팩토리 패턴/ 의존성 주입 등
  • ApplicationContext
    • Bean객체를 관리하는 객체!
    • Bean 객체: Application Context에 의해 관리되는 객체
      • JVM에 많은 객체가 등록되고 이들 중 ApplicationContext에서 관리되는 객체를 구분하기 위해서 Bean이라는 용어가 만들어짐.
      • Bean anontation을 이용해서 선언
    • Configuration Meta
      • 실제로 ApplicationContext는 만들어야 할 빈 객체 정보를 config를 통해서 받음.
      • 이때 config metadata를 xml과 java로 작성할 수 있다
        • xml 작성 ⇒ GenericXmlApplicationContext 구현체 사용
        • java작성 ⇒ AnnotationConfigApplicationContext 구현체 사용
        • java로 작성되는 게 주류를 이룬다.
  • Components Scan
    • 위에서 말했던 빈 객체들에 대해서 설정 클래스에 따로 작성하지 않아도 알아서 찾아서 등록해주는 기능!(개발자의 편의성과 생산성 증대)
    • Stereotype Annotation을 이용해서 Scan 대상 객체를 표기
      • notion image
      • 불필요한 객체들은 excloude filters를 통해서 제거 가능
  • Bean Scope
    • notion image
    • singleton
      • 단 하나의 객체만 생성됨.(Default)
    • prototype
      • 매번 새로운 타입의 객체가 생성됨.
      • @Scope 이용
        • @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    • request
    • session
    • global session
  • Bean Life Cycle
    • Bean 생성 생명주기 Callback
        1. @PostConstruct이 적용된 method 호출
        1. Bean이 InitializingBean interface 구현 시 afterPropertiesSet 호출
        1. @Bean의 initMethod 에 설정한 메소드 호출
         
    • Bean 소멸 생명주기 Callback
        1. @PreDestory가 적용된 method 호출
        1. Bean이 DisposableBean interface 구현 시 destory 호출
        1. @Bean의 destoryMethod에 설정한 메소드 호출
  • Enviroment Profile
    • 모의객체
    • Garbage Collector