
백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 스프링 5에서 다음과 같은 Null 관련 애노테이션이 추가되었다. @NonNull Null 허용하지 않음 @Nullable Null 허용 @NonNullApi 패키지 레벨에 모든 파라미터와 리턴에 @NonNull을 적용 @NonNullFields 패키지 레벨에서 필드에 Null 허용하지 않음 위의 애노테이션들을 사용하면 IDE의 도움을 받아 컴파일 타임에서 최대한 NullPointerException을 방지할 수 있다. 1. Null-Safety 먼저 간단한 예를 위해 Service와 AppRunner를 만들어보자. @Service public class EventService { // return 타입이 NonN..

백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. DataBinder라는 Spring의 핵심 인터페이스에 대해 알아보자. 1. 데이터 바인딩 데이터 바인딩이란 기술적인 관점에서 봤을 때 프로터피 값을 어떤 타겟 객체에 설정하는 기능이라고 정의할 수 있다. 즉, 사용자가 어떤 Application 도메인 객체에 값을 동적으로 할당하고 싶을 때 사용한다. 예를들면, 사용자가 주로 입력하는 값은 문자열 값인데 객체가 가지고 있는 다양한 타입(int, long, boolean, Date 등)으로 인식해야 하는 경우가 있다. 이처럼 객체가 가지고 있는 다양한 타입을 변환해주는 기능을 데이터 바인딩이라고 한다. 2. 예제 먼저 가장 고전적인 방법으로 데이터 바인딩에 대해 알..

백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 이번에 다룰 내용은 ApplicationContext의 다양한 기능 중 한 가지인 MessageSource이다. ApplicationContext는 다양한 기능을 상속하고 있는데, 그중 MessageSource는 다국어 처리를 할 때 사용되는 객체이다. 간단한 예제로 MessageSource의 사용 방법을 알아보자. 1. 사용 예제 테스트를 위해 먼저 다국어 처리를 해줄 메시지를 만들어야 한다. 스프링 부트 어플리케이션에서는 별다른 설정 없이 messages로 시작하는 properties들을 MessageSource로 읽어 Bundle로 인식할 수 있다. resources 밑에 message.properties와 ..

백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 오늘 기록할 내용은 Bean의 스코프에 대한 전반적인 이해와 활용 방법, 사용 시 주의할 사항 등을 다룬다. 1. Bean의 스코프 Bean의 스코프로는 크게 싱글톤과 프로토타입으로 나눌 수 있다. (다양한 스코프가 있지만 이번시간에는 이 두 가지를 다룹니다.) 먼저 싱글톤과 프로토타입의 개념을 설명하자면 싱글톤 스코프는 애플리케이션 전반에 걸쳐 해당 Bean의 인스턴스가 오직 한번 생성되는 것이다. 반면에 프로토타입은 매번 새로운 인스턴스를 생성한다. 싱글톤 해당 Bean의 인스턴스를 오직 한번만 생성 Bean을 생성할 때 별도의 설정을 해주지 않으면 default는 싱글톤 프로토타입 해당 Bean의 인스턴스를 ..

백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 이전에 ApplicationContext와 다양한 빈 설정 방법 글에서 잠깐 다루었던 내용 중 @ComponentScan과 @Component의 기능과 동작 원리를 조금 더 자세히 살펴보자. 1. @ComponentScan @ComponentScan은 스프링 3.1부터 도입된 Annotation이며 스캔 위치를 설정하고, 어떤 Annotation을 스캔할지 또는 하지 않을지 결정하는 Filter 기능을 가지고있다. 중요한 설정으로는 BasePackages와 BasePackageClasses가 있다. 이는 스캔 위치를 설정하는 방법들인데, BasePackages는 String으로 입력된 패키지의 경로를 스캔하는 방법..

백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 오늘은 @Autowired Annotation의 사용 방법, 동작 원리까지 알아본다. 1. @Autowired란? @Autowired는 의존성 주입을 할 때 사용하는 Annotation으로 의존 객체의 타입에 해당하는 bean을 찾아 주입하는 역할을 한다. 2. @Autowired를 사용할 수 있는 위치 @Autowired는 기본적으로 아래의 위치에서 사용할 수 있다. 생성자 (스프링 4.3부터는 생략 가능) Setter 필드 3. 사용 시 주의점 해당 타입의 bean이 없거나 한 개인 경우 3-1. 생성자에 @Autowired 명시 (스프링 4.3부터는 생략 가능) @Service public class Test..

백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 스프링 초기에는 컨테이너나 bean을 xml로 설정하는게 대세였지만, 많은 개발자들의 의견을 수용하여 Annotation 기반의 DI를 지원하기 시작했다. 따라서 손쉽게 Bean을 등록하고 사용할 수 있게 되었다. 이번 글은 xml을 이용한 Bean 등록 방법부터, 현재 많이 사용되고 있는 Annotation기반 Bean 등록 및 사용 방법까지 공부한 내용을 정리한 내용이다. public class TestServcie { TestRepository testRepository; public void setTestRepository(TestRepository testRepository) { this.testRepos..
백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 스프링을 이용해 개발을 할 때 '의존성 주입'이라는 말을 많이 들어봤을 것이다. 의존성 주입은 스프링이 제공하는 핵심 기술 중 하나로, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입받아 사용하는 방법을 말한다. 복잡한 의존 관계를 개발자가 관리하는 것이 아닌 스프링 프레임워크가 관리해주기 때문에 개발자는 개발에만 집중할 수 있고, 이는 생산성 향상으로 이어질 수 있다. 이처럼 의존 객체를 개발자가 아닌 스프링 프레임워크가 제어한다는 개념이 IoC이다. 말 그대로 제어권이 개발자가 아닌 스프링 프레임워크로 넘어갔기 때문에 '제어의 역전'이라 부른다. 스프링은 IoC라는 기능을 제공하기 위해 ..