우리가 알고있는 스프링의 애플리케이션 컨텍스트에는 다양한 구현체들이 존재하는데, 이번에는 어떠한 구현체들이 있는지 살펴보도록 하겠습니다. 아래의 내용은 토비의 스프링을 참고하여 정리한 내용입니다. 1. 빈 설정 메타정보(BeanDefinition)와 다양한 종류의 Spring Application Context(스프링 애플리케이션 컨텍스트) [ 빈 설정 메타정보(BeanDefinition) ] Spring과 관련된 설정을 하기 위한 방법으로는 XML과 Java로 하는 2가지 방법이 있고, 두 가지 방식을 혼용하여 사용하는 것 역시 가능하다. 그러한 이유는 Spring이 설정 메타정보를 BeanDefinition 인터페이스를 통해 관리하기 때문이다. Spring Application Context(스프링 ..
개발을 하다 보면 API의 요청이나 응답을 처리할 때 또는 다른 계청으로 넘기는 파라미터가 너무 많은 시점에 별도의 DTO를 생성해야 하나 고민을 하는 시점이 생깁니다. 개인적으로는 간단한 애플리케이션이 아니고서는 엔티티와 DTO를 분리하는 것을 선호하는데, 이번에는 그 이유에 대해 알아보고자 합니다. 아래의 내용은 김영한님의 강의를 들으면서 일부 참고했습니다ㅎㅎ 1. 엔티티(Entity) 또는 도메인 객체(Domain Object)와 DTO를 분리해야 하는 이유 엔티티는 비즈니스 로직을 포함하는 도메인 엔티티와 데이터베이스 관련 처리를 위한 영속성 엔티티로 나누어질 수 있습니다. 하지만 아래의 내용에서는 설명의 편의를 위해 2개를 합하여 설명하고자 하니 참고 부탁드립니다. [ 엔티티(Entity)와 D..
앞선 포스팅에서 프로퍼티(Properties)에 저장된 특정한 설정 값들을 불러오는 방법에 대해 살펴보았습니다. 그런데 @EnableConfigurationProperties에 등록해야 하는 클래스들이 많은 경우에는 일일이 등록하는게 번거로울 수 있다. 이번에는 스캔 방식으로 프로퍼티 클래스들을 등록하는 방법에 대해서 알아보고자 한다. 1. @ConfigurationPropertiesScan을 이용한 설정 프로퍼티 클래스(@Configuration Properties)의 빈 등록 [ @EnableConfigurationProperties의 한계점 ] @EnableConfigurationProperties를 이용해 설정 프로퍼티 클래스(@Configuration Properties)를 사용하는 경우에는 해..
Spring 프레임워크로 개발을 하다 보면 프로퍼티(Properties)에 저장된 특정한 설정 값들을 불러와야 하는 경우가 있다. 많은 글 들에서 프로퍼티(Properties)를 불러오는 내용들을 설명하고 있는데, 이번에는 final 변수가 붙은 클래스에 설정 값을 불러오는 방법에 대해서 알아보고자 한다. 1. 수정자(Setter)로 클래스에 프로퍼티(Properties) 설정 값 불러오기 [ 설정값 및 프로퍼티(Properties) 클래스 ] 아주 쉬운 예시로 Properties에 다음과 같은 설정 파일들이 있다고 가정하자. spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELA..
1. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)이란? [ AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)이란? ] 프로그래밍을 하다보면 공통적인 기능이 많이 발생한다. 이러한 공통 기능을 모든 모듈에 적용하기 위해 상속을 이용한다. 하지만 Java에서는 다중 상속이 불가능하며, 상속을 받아 공통 기능을 부여하기에는 한계가 있다. 예를 들어 우리가 개발한 API의 호출 시간을 측정하고 싶다고 하자. 이를 AOP없이 구현한다면 어떻겠는가? AOP를 적용하지 않는다면 중복 코드가 발생할 소지가 있고, 코드의 변경이 필요하면 여러 코드에 종속적으로 변경이 필요할 것이며, 핵심적인 비지니스 로직에 호출 시간 측정이라는 부수적인 로직이 추가되..