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 { }..
Spring을 제대로 이용하기 위해서는 Spring이 갖는 기본 개념과 철학을 이해해야 한다. 이번에는 Spring에 입문하는 사람들을 위해 Spring에 대해 이해할 수 있는 내용을 작성해보고자 한다. 1. Spring에 대한 이해와 입문 Spring Framework(스프링 프레임워크)은 자바 기반의 웹 애플리케이션 개발을 위한 프레임워크이다. 스프링은 객체 지향 개발을 매우 용이하게 할 수 있도록 도와주며, 애플리케이션을 빠르고 효율적으로 개발할 수 있도록 기본 틀과 공통 프로그래밍 모델, API 등을 제공한다. 스프링 개발자라면 최소한 이 3가지 프로그래밍 모델만큼은 잘 이해하고 자유롭게 응용할 수 있어야 한다. [ 1. Spring Container(스프링 컨테이너) ] 스프링은 스프링 컨테이너..
1. 롬봄(Lombok)에 대한 이해와 활용 [ 롬봄(Lombok) 이란? ] Lombok이란 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다. Lombok을 이용하면 Getter나 Setter, 생성자 등을 자동완성 시킬 수 있어서 개발자의 생산성을 높여준다. (Lombok에 대해 자세한 내용은 여기를 참고해주세요!) @Getter @Setter public class User { private String email; private String name; } [ @RequiredArgsConstructor ] Lombok의 다양한 어노테이션들 중에서 이번에 주목해 볼 것은 @RequiredArgsConstructor 이다. 이 어노테이션은 NotNull이거나 final이 붙은 변수들에 대해 ..
1. Transaction(트랜잭션)에 대한 이해 [ 트랜잭션(Transaction)의 필요성 ] 만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생된다면 어떻게 해야 할까? DB의 데이터들은 수정이 되기 전의 상태로 다시 되돌아가져야 하고, 다시 수정 작업이 진행되어야 할 것이다. 이렇듯 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 트랜잭션(Transaction) 이다. 트랜잭션은 더 이상 쪼갤 수 없는 최소 작업 단위를 의미한다. 그래서 트랜잭션은 commit으로 성공 하거나 rollback으로 실패 이후 취소되어야 한다. 하지만 모든 트랜잭션이 동일한 것은 아니고 속성에 따라 동작 방식을 다르게 해줄 수 있다. 예를 들어 1개의 새로운 데이터를 추가하는 ..