제어의 역전(IoC; Inversion of Control)
- IoC: 객체를 외부에서 생성
- DI: 외부에서 생성한 객체를 주입
- Beans: 외부에서 생성한 객체들
Beans in IoC container(or Bean Factory)
Data Object
- DAO(Data Access Object): DB에 접근하기 위한 객체
- DTO(Data Transfer Object): 계층 간 데이터 교환을 하기 위한 객체
로직을 가지지 않는 순수한 데이터 객체
그치만 alchemy(ORM)와는 달랐다.
- VO(Value Object): DTO와 같지만 setter가 없는 read-only 객체
프로젝트 기본 구조
- controller: 웹 MVC의 controller
웹 Application 첫 진입점
→ @Controller(Handler Mapping) 부터 찾고 없으면 static
- model(DTO): 회원 객체
- service: 핵심 비지니스 로직 구현
- repository(DAO): 데이터 베이스에 접근 도메인 객체를 db에 저장 관리
View Layer와 DB Layer의 역할을 철저하게 분리하기 위함
- (configuration)
AOP(Aspect Oriented Programming)
모든 메소드의 호출시간을 측정하고 싶다면?
공통 기능 공통 관심사항 cross-cutting(서로 다른 두 위치에서 동시에 발생하는 동작을 설정하기 위해 필름에서 가장 자주 사용되는 편집 기술) vs 핵심 관심사항 core
- 관점 지향 프로그램(AOP) → 공통과 핵심을 분리시킨다
- 시간 측정 로직 → 원하는 곳에 공통 관심사항 적용
- @Around: AOP의 대상을 지정한다.