AOP를 사용하면 핵심 기능과 부가 기능이 코드상 완전히 분리되어서 관리된다. 그렇다면 AOP를 사용할 때 부가 기능 로직은 어떤 방식으로 실제 로직에 추가되는걸까? AOP가 적용되는 방식으로는 크게 3가지 방법이 있다. 컴파일 시점 : 실제 대상 코드에 애스팩트를 통한 부가 기능 호출 코드가 포함된다. AspectJ를 직접 사용해야 한다. 클래스 로딩 시점 : 실제 대상 코드에 애스팩트를 통한 부가 기능 호출 코드가 포함된다. AspectJ를 직접 사용해야 한다. 런타임 시점(프록시) : 실제 대상 코드는 그대로 유지된다. 따라서 프록시를 통해 부가 기능을 사용할 수 있다. 스프링 AOP는 이 방식을 사용한다. 컴파일 시점 .java 소스 코드를 컴파일러를 사용해서 .class를 만드는 시점에 부가 기..
시스템 시스템 제작과 시스템 사용을 분리하라 소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 ‘연결’하는) 준비 과정과 (준비 과정 이후에 이어지는) 런타임 로직을 분리해야 한다. Main 분리 시스템 생성과 시스템 사용을 분리하는 한 가지 방법으로, 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮기고, 나머지 시스템은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다. 팩토리 객체 생성 시점을 애플리케이션이 결정할 필요가 있을 때 Abstract Factory 패턴을 사용하여 코드를 감춘다. 객체를 생성하는 시점은 애플리케이션이 결정하지만 객체를 생성하는 코드는 애플리케이션이 모른다. 의존성 주입(DI) 사용과 제작을 분리하는 강력한 메커니즘 중 하나이다...
- Total
- Today
- Yesterday
- 코테
- Spring
- 북클럽
- 인프런
- 코틀린
- 릿코드
- 문자열
- 구현
- leetcode
- 알고리즘
- MySQL
- mysql 8.0
- spring boot
- 스프링부트
- webflux
- kotlin
- 자료구조
- 김영한
- Algorithm
- 노마드코더
- 노마드
- 리팩토링
- 파이썬
- 스프링
- 그리디
- 스프링 부트
- 정렬
- Real MySQL
- 데이터베이스
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |