백엔드/프레임워크

[토비의 스프링] 7장: 스프링 핵심 기술의 응용

박지환 2023. 2. 25. 17:31
토비의 스프링: 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