토비의 스프링: Vol. 1: 스프링의 이해와 원리
스프링의 3대 핵심 기술
- IoC/DI
- 서비스 추상화
- AOP
스프링이 가장 가치를 두고 적극적으로 활용하려고 하는 것은 결국 자바 언어가 기반을 두고 있는 객체지향 기술
리소스 변환
DI
JAXB(Java Architecture for XML Binding): XML를 동일한 구조의 오브젝트로 매핑해줌
- 언마샬링(unmarshalling): XML 문서를 읽어서 자바의 오브젝트로 변환
- 마샬링(marshalling): 바인딩 오브젝트를 XML 문서로 변환
스프링에서는 자신을 참조하는 자기참조 빈을 만들 수 있음
디폴트 의존관계: 외부에서 DI 받지 않는 경우 기본적으로 자동 적용되는 의존관계
서비스 추상화
OXM(Object-XML Mapping): XML과 자바 오브젝트를 매핑해서 상호 변환해주는 기술
OXM 서비스 추상화: Marshaller, Unmarshaller
리소스 추상화: 스프링 리소스(Resource)
객체지향 설계와 DI
객체지향 설계를 잘하는 방법: DI를 의식하면서 설계하기
DI를 적용할 때는 두 개의 오브젝트가 인터페이스를 통해 느슨하게 연결되어야 함
인터페이스 분리 원칙(Interface Segregation Principle): 목적과 관심이 각기 다른 클라이언트가 있다면 인터페이스를 통해 이를 적절하게 분리해야 한다는 원칙, 클라이언트의 목적과 용도에 적합한 인터페이스만을 제공하는 원칙
인터페이스의 상속을 통해 안전하게 다른 클라이언트를 위한 기능 확장을 할 수 있음
인터페이스를 적절하게 분리하고 확장하는 방법을 통해 오브젝트 사이의 의존관계를 명확하게 해주고, 기존 의존관계에 영향을 주지 않으면서 유연한 확장성을 얻는 방법이 무엇인지 항상 고민해야 함
DI와 객체지향 설계는 서로 밀접한 관계를 맺고 있음!
자바 언어의 변화와 스프링
애노테이션의 메타정보 활용
메타 애노테이션: 애노테이션의 정의에 부여된 애노테이션
- @Autowired의 자동와이어링을 이용하여 DI 관련 코드를 대폭 줄일 수 있음
- @Component를 이용해 자동 빈 등록이 가능함
- @Import로 보조 설정 클래스를 가져올 수 있음
- @Profile로 실행환경 별 프로파일을 설정 할 수 있음
- 프로퍼티 소스 (.properties)로 빈 설정에 필요한 정보를 분리하고, 이를 가져와 사용할 수 있음
- @Enable* 등 전용 애노테이션을 만들어 의미를 잘 드러나게 할 수 있음 (@Repository, @Service 등)
정리
스프링 프레임워크를 제대로 활용하는 방법: 객체지향적인 설계와 DI를 효과적으로 활용하고, 스프링의 기반기술인 DI, 서비스 추상화, AOP 등을 활용할 수 있어야 함
주요 내용
- SQL처럼 변경될 수 있는 텍스트로 된 정보는 외부 리소스에 담아두고 가져오게 만들면 편리하다
- 성격이 다른 코드가 한데 섞여 있는 클래스라면 먼저 인터페이스를 정의해서 코드를 각 인터페이스별로 분리하는 게 좋다. 다른 인터페이스에 속한 기능은 인터페이스를 통해 접근하게 만들고, 간단히 자기참조 빈으로 의존관계를 만들어 검증한다. 검증을 마쳤으면 아예 클래스를 분리해도 좋다
- 자주 사용되는 의존 오브젝트는 이폴트로 미리 정의해두면 편리하다
- XML과 오브젝트 매핑은 스프링의 OXM 추상화 기능을 활용한다
- 특정 의존 오브젝트를 고정싴며 기능을 특화하려면 멤버 클래스로 만드는 것이 편리핟. 기본에 만들어진 기능과 중복되는 부분은 위임을 통해 중복을 제거하는 게 좋다
- 외부의 파일이나 리소스를 사용하는 코드에서는 스프링의 리소스 추상화와 리소스 로더를 사용한다
- DI를 의식하면서 코드를 작성하면 객체지향 설계에 도움이 된다
- DI에는 인터페이스를 사용한다. 인터페이스를 사용하면 인터페이스 분리 원칙을 잘 지키는 데도 도움이 된다
- 클라이언트에 따라서 인터페이스를 분리할 때, 새로운 인터페이스를 만드는 방법과 인터페이스를 상속하는 방법 두 가지를 사용할 수 있다
- 애플리케이션에 내장하는 DB를 사용할 때는 스프링의 내장형 DB 추상화 기능과 전용 태그를 사용하면 편리하다
Reference: http://www.yes24.com/Product/Goods/7516721
토비의 스프링 3.1 Vol. 1 스프링의 이해와 원리 - YES24
대한민국 전자정부 표준 프레임워크 스프링을 설명하는 책!단순한 예제를 스프링 3.0과 스프링 3.1의 기술을 적용하며 발전시켜 나가는 과정을 통해 스프링의 핵심 프로그래밍 모델인 IoC/DI, PSA, A
www.yes24.com
'백엔드 > 프레임워크' 카테고리의 다른 글
[토비의 스프링] 9장: 스프링 프로젝트 시작하기 (0) | 2023.03.05 |
---|---|
[토비의 스프링] 8장: 스프링이란 무엇인가? (0) | 2023.03.04 |
[토비의 스프링] 6장: AOP (0) | 2023.02.18 |
[토비의 스프링] 5장: 서비스 추상화 (0) | 2023.02.11 |
[토비의 스프링] 4장: 예외 (0) | 2023.02.04 |