🔭
Ellery's study archive
Resume(수정중)GithubTistory
  • framework, library
    • Spring core
      • 스프링 트라이앵글 - POJO, IOC/DI, AOP, PSA
      • Servlet
    • Spring MVC
      • DispatcherServlet
      • Validation
    • Spring Boot
    • Spring Security
    • Spring Batch
    • Spring Webflux
    • JPA
    • JUnit, Spring Test
    • etc
      • Slf4j MDC(Mapped Diagnostic Context)
  • ETC, 개발 팁들
    • 개발 팁들
      • 스프링 프로젝트 init 시에 해야될 것들
      • vim 한글 깨질 때 인코딩 방식 지정
      • EC2 ssh connection 쉽게 하기
      • 리눅스 커맨드, netstats
      • Fork한 레포지토리 origin 업데이트
      • git merge, rebase
      • Intellij 자주 쓰는 기능 단축키
      • JSON handling
      • aws user-data.sh
    • Lombok annotation, 권장 방식
    • DB 모델링 시에 인조 식별자 정의하는 케이스
    • Redis pub/sub vs Apache kafka
  • Language
    • Java
      • 자바 버젼별 feature
      • JVM architecture
      • Garbage collection
      • Java String pool
      • java 8 Concurrent
      • Optional
      • Stream
      • Comparator, Comparator
      • Error, Exception
      • Java의 Call by value(pass by value)
      • Java 변수 간 값 Swap 방식 5가지
    • Javascript
      • 자주 쓰는 ES6 문법 정리
      • ES6 module
      • ES6 proxy
      • scope, var closure 이슈, let, const
    • Python
      • @lru_cache
  • CS
    • OS
      • Process, Thread
      • CPU scheduling
      • sync vs async, blocking vs nonblocking
      • Memory segmentation
      • virtual memory
      • 페이지 교체 알고리즘
    • Network
      • UDP
      • TCP
      • DNS
      • HTTP
      • web server, WAS
      • Proxy, Load balancer
      • web socket, WebRTC
      • gRPC
      • web secure
    • DB
      • MySQL
      • index
      • 정규화
      • DB 트랜잭션, 동시성 제어 문제
      • 클러스터링
      • 레플리케이션
      • 샤딩
    • Data Structure, Algorithm
      • AVL tree, Red black tree
      • B-tree, B*tree, B+tree
      • Hash
    • Design pattern
      • SOLID
      • 생성 패턴
        • 싱글톤 패턴
        • 팩토리 메서드 패턴
        • 빌더 패턴
        • Null 객체 패턴
      • 구조 패턴
        • 퍼사드 패턴
        • 프록시 패턴
        • 어댑터 패턴
        • 데코레이터 패턴
      • 행위 패턴
        • 전략 패턴
        • 템플릿 메서드 패턴
        • 상태 패턴
        • 옵저버 패턴
  • 소프트웨어 아키텍쳐
    • Layered Architecture
    • 클린 아키텍쳐
    • DDD
    • etc
      • DTO vs VO
  • 개발 서적들
    • 소트웍스 앤솔로지에서 소개되는 객체지향 생활 체조 원칙 간략 정리
    • 엘레강트 오브젝트 - 새로운 관점에서 바라본 객체지향
    • 만들면서 배우는 클린 아키텍쳐
  • 테크 블로그
Powered by GitBook
On this page
Edit on GitHub
  1. framework, library
  2. Spring core

스프링 트라이앵글 - POJO, IOC/DI, AOP, PSA

POJO를 둘러싼 IoC/DI, AOP, PSA 이미지를 기억하자

PreviousSpring coreNextServlet

Last updated 2 years ago

  1. IoC/DI - 제어의 역전, 의존성 주입

  • 객체 내에서 사용할 의존성을 객체 자신이 만들어내지 않고, 내가 사용할 의존성을 누군가가 주입해준다는 개념(Inversion of Control , Dependency injection)

  • 스프링 없이 의존성 주입 - 생성자, 필드를 통한 의존성 주입

  • 스프링을 통한 의존성 주입 - XML 설정 파일(property 태그), @Autowired, @Resource

    • 스프링에서는 IoC 컨테이너에 등록된 객체들을 스프링 빈으로 관리한다

    참고 자료

  1. AOP - Aspect, 관점, 핵심 관심사, 횡단 관심사

  • 스프링 DI는 의존성에 대한 주입, 스프링 AOP는 로직 주입

  • 핵심 관심사(입금, 출금, 이체 모듈)에서 공통적으로 사용되는 부분(로깅, 보안, 트랜잭션)을 횡단 관심사라고 한다(코드 = 핵심 관심사 + 횡단 관심사)

    • 핵심관심사(around)에서 횡단 관심사 기능을 주입할 수 있는 지점 → Before, After, AfterReturning, AfterThrowing

    • 관련 용어들

      • JointPoint - 연결 가능한 지점

      • Pointcut - Aspect 적용 위치 지정자(JointPoint의 부분 집합)

      • Advice - pointcut에 적용할 로직(메서드) + 언제 라는 개념

      • Aspect - Advisor의 집합체(Advice + PointCut)

      • Advisor - 1개의 Advice + 1개의 Pointcut

  1. PSA - 일관성 있는 서비스 추상화

  • 어댑터 패턴을 적용해서 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어하는 것을 서비스 추상화라고 한다.

  • ex) JDBC라는 표준 스펙이 있어서 어떤 DB제품을 써도 같은 방식으로 자바 코드를 작성할 수 있다(어댑터 패턴)

https://github.com/spring-attic/understanding/tree/master/application-context
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContext.html
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html
Adapter
CacheManager (Spring Framework 6.0.6 API)
Logo
Inversion of Control Containers and the Dependency Injection patternmartinfowler.com
Logo
Proxy
Logo
Logo
PlatformTransactionManager (Spring Framework 6.0.6 API)
Logo