이 내용은 토비의 스프링 2권의 1장 내용을 참고하며 작성하였습니다. 1. 설정 값 분리의 필요성 [ 설정 값 분리의 필요성 ] 개발을 진행하다 보면 데이터베이스 연결 정보나 외부 API 주소 등과 같은 메타 정보들을 관리해야 한다. 해당 메타정보들을 클래스 파일에 넣을 수도 있겠지만 다음과 같은 이유로 프로퍼티 파일(properties)나 야믈 파일(yaml, yml)로 분리해서 관리할 것을 권장한다. 환경에 따라 유연하게 값을 설정할 수 있음 초기값을 설정할 수 있음 불필요한 컴파일을 줄일 수 있음 1. 환경에 따라 유연하게 값을 설정할 수 있음 일반적으로 로컬 환경이나 알파/스테이지 환경 그리고 운영 환경에 따라 서로 다른 데이터베이스 서버를 가지고 있다. 만약 환경에 따라 다른 값을 자바 코드만으..
이 내용은 토비의 스프링 1권의 797부터 시작하는 내용을 참고하며 작성하였습니다. 1. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)의 이해 [ AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)의 등장 ] AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)를 이해하기 위해서는 어드바이스(Advice), 포인트컷(PointCut)를 이해해야 한다. 어드바이스(Advice): 타겟 오브젝트에 적용하는 부가 기능을 담은 오브젝트 포인트컷(PointCut): 메소드 선정 알고리즘을 담은 오브젝트 부가기능은 핵심기능과 섞이면 설계와 코드가 지저분해지기 때문에 부가기능을 독립적인 모듈로 만들고자 하는 필요성이 대두되..
이 내용은 토비의 스프링 1권의 797부터 시작하는 내용을 참고하며 작성하였습니다. 1. 도메인 주도 설계 및 개발(도메인 객체 중심 개발) [ 도메인 객체 중심 개발 ] 도메인 객체 중심 아키텍처란 도메인 모델을 반영하는 객체를 만들어두고, 그것을 중심으로 개발하는 아키텍처를 의미한다. 도메인 모델은 DB의 엔티티 설계에도 반영되기 때문에, DB의 엔티티와 유사할 확률이 높다. 물론 DB에는 없고 비즈니스 로직 상에서만 존재하는 모델도 있기 때문에 항상 일치하지는 않을 수 있다. 이렇게 객체를 만들어두고 그 안에 정보를 담아서 각 계층 사이에 전달하게 만드는 것이 도메인 객체 중심 아키텍처이다. 예를 들어 어떤 제품과 카테고리가 있을 때 다음과 같은 도메인 객체가 존재할 수 있다. public clas..
Spring을 제대로 이용하기 위해서는 Spring이 갖는 기본 개념과 철학을 이해해야 한다. 이번에는 Spring에 입문하는 사람들을 위해 Spring에 대해 이해할 수 있는 내용을 작성해보고자 한다. 1. 올바른 단위 테스트 작성 - 독립적인 테스트 [ 기존의 단위 테스트 - 의존적인 테스트 ] 얘기해보고자 하는 상황은 public 메소드가 다른 public 메소드를 이용하는 경우이다. 예를 들어 다음과 같은 메일 전송 서비스 클래스가 있다고 하자. sendMailIfRegisteredEmail 함수는 isEmailRegistered를 호출하여 사용하고 있다. @Service @RequiredArgsConstructor public class MailService { private final Mail..
Spring을 제대로 이용하기 위해서는 Spring이 갖는 기본 개념과 철학을 이해해야 한다. 이번에는 Spring에 입문하는 사람들을 위해 Spring에 대해 이해할 수 있는 내용을 작성해보고자 한다. 1. XML 설정보다 Java 설정을 사용해야 하는 이유 [ Java 설정의 장점 ] Spring 프레임워크는 3.1부터 기존의 XML 설정에 더해 Java 기반의 설정까지 지원하기 시작하였다. 초기에는 XML로 설정들을 관리할 것을 권하였지만, 이제는 다음과 같은 이유로 Java 기반의 설정을 권장하고 있다. 더 많은 정보를 얻을 수 있다. 설정의 변경이 용이하다. 컴파일 에러를 얻을 수 있다. 1. 더 많은 정보를 얻을 수 있다. @Component public class UserFactory { }..