![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/7Acuh/btqERQX5BqJ/mkgZuyCLeM8ZXEZMqHKick/img.png)
백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 스프링 5에서 다음과 같은 Null 관련 애노테이션이 추가되었다. @NonNull Null 허용하지 않음 @Nullable Null 허용 @NonNullApi 패키지 레벨에 모든 파라미터와 리턴에 @NonNull을 적용 @NonNullFields 패키지 레벨에서 필드에 Null 허용하지 않음 위의 애노테이션들을 사용하면 IDE의 도움을 받아 컴파일 타임에서 최대한 NullPointerException을 방지할 수 있다. 1. Null-Safety 먼저 간단한 예를 위해 Service와 AppRunner를 만들어보자. @Service public class EventService { // return 타입이 NonN..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bITokc/btqEK8Y5IdO/2BcKE6Iiu3dn8AK77Og3vK/img.png)
백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. DataBinder라는 Spring의 핵심 인터페이스에 대해 알아보자. 1. 데이터 바인딩 데이터 바인딩이란 기술적인 관점에서 봤을 때 프로터피 값을 어떤 타겟 객체에 설정하는 기능이라고 정의할 수 있다. 즉, 사용자가 어떤 Application 도메인 객체에 값을 동적으로 할당하고 싶을 때 사용한다. 예를들면, 사용자가 주로 입력하는 값은 문자열 값인데 객체가 가지고 있는 다양한 타입(int, long, boolean, Date 등)으로 인식해야 하는 경우가 있다. 이처럼 객체가 가지고 있는 다양한 타입을 변환해주는 기능을 데이터 바인딩이라고 한다. 2. 예제 먼저 가장 고전적인 방법으로 데이터 바인딩에 대해 알..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b3FL5h/btqEChXCnYu/5DLTqlIO4ionHivUym0P2k/img.png)
백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 이번에 다룰 내용은 ApplicationContext의 다양한 기능 중 한 가지인 MessageSource이다. ApplicationContext는 다양한 기능을 상속하고 있는데, 그중 MessageSource는 다국어 처리를 할 때 사용되는 객체이다. 간단한 예제로 MessageSource의 사용 방법을 알아보자. 1. 사용 예제 테스트를 위해 먼저 다국어 처리를 해줄 메시지를 만들어야 한다. 스프링 부트 어플리케이션에서는 별다른 설정 없이 messages로 시작하는 properties들을 MessageSource로 읽어 Bundle로 인식할 수 있다. resources 밑에 message.properties와 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c0YsAi/btqEuYXdkkH/NOlwudvkd1ro1a9z97gqL1/img.png)
백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 오늘 기록할 내용은 Bean의 스코프에 대한 전반적인 이해와 활용 방법, 사용 시 주의할 사항 등을 다룬다. 1. Bean의 스코프 Bean의 스코프로는 크게 싱글톤과 프로토타입으로 나눌 수 있다. (다양한 스코프가 있지만 이번시간에는 이 두 가지를 다룹니다.) 먼저 싱글톤과 프로토타입의 개념을 설명하자면 싱글톤 스코프는 애플리케이션 전반에 걸쳐 해당 Bean의 인스턴스가 오직 한번 생성되는 것이다. 반면에 프로토타입은 매번 새로운 인스턴스를 생성한다. 싱글톤 해당 Bean의 인스턴스를 오직 한번만 생성 Bean을 생성할 때 별도의 설정을 해주지 않으면 default는 싱글톤 프로토타입 해당 Bean의 인스턴스를 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/daSP5l/btqEnh3XBne/GgNS4WnvmQ8oGvCp9JBQ41/img.png)
@Bean과 @Component는 어떤 객체를 Bean으로 등록하고 싶을 때 사용되는 애노테이션들이다. 그렇다면 이 둘의 차이점이 뭘까? 두개의 애노테이션 모두 Bean으로 등록하겠다는 목적을 가지는 애노테이션인데 왜 둘로 나누어져 있을까? 항상 헷갈렸던 부분이기도 하고 명확한 이해가 없는 것 같아 이번 글에서 확실히 정리해보고자 한다. 1. @Bean @Bean 같은 경우에는 메서드 위에 선언 가능하고 외부 라이브러리를 Bean으로 등록할 때 사용된다. 이해를 돕기 위해 먼저 @Bean 애노테이션을 살펴보자. @Target이 METHOD로 지정되어있다. 이는 메서드 위에 선언되어야 한다는 의미이다. 이건 알겠는데.. 왜 외부 라이브러리를 Bean으로 등록할 때 사용되는 걸까? 외부 라이브러리는 Read..
Spring으로 개발을 하다 보면 Bean이라는 개념이 자주 등장한다. 자주 사용하는 용어이기 때문에 당연히 알고 있는 개념이라고 생각하지만, 막상 의미를 정의하라고 하면 헷갈리는 경우가 많다. 그래서 오늘은 Bean이라는 개념을 명확하게 정리해보고자 한다. 1. Java Bean 먼저 Java Bean에 대해 알아보자. 결론부터 말하자면 Java Bean은 특정 형태의 클래스를 가르키는 뜻으로 사용된다. DTO 혹은 VO의 형태가 Java Bean이라고 생각하면 쉽다. 필드는 private로 구성되어 getter와 setter를 통해서만 접근할 수 있고, 전달 인자가 없는 생성자를 가지는 형태의 클래스이다. getter / setter public의 no-argument 생성자 모든 필드는 privat..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bk517m/btqEbuQ5gTp/siwfXiHsfUd5Mt9d9nzNG1/img.png)
백기선님의 스프링 프레임워크 핵심 기술이라는 강좌를 들으며 공부한 내용을 정리한 글입니다. 이전에 ApplicationContext와 다양한 빈 설정 방법 글에서 잠깐 다루었던 내용 중 @ComponentScan과 @Component의 기능과 동작 원리를 조금 더 자세히 살펴보자. 1. @ComponentScan @ComponentScan은 스프링 3.1부터 도입된 Annotation이며 스캔 위치를 설정하고, 어떤 Annotation을 스캔할지 또는 하지 않을지 결정하는 Filter 기능을 가지고있다. 중요한 설정으로는 BasePackages와 BasePackageClasses가 있다. 이는 스캔 위치를 설정하는 방법들인데, BasePackages는 String으로 입력된 패키지의 경로를 스캔하는 방법..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dnkahj/btqEdwFZmS9/UdrX2toPMO0hsJbM4Hk0TK/img.png)
API 문서 자동화 프레임워크인 Swagger를 학습하고 활용해보자. 1. Swagger란? 처음 개발하거나 혹은 유지보수를 진행할 때, API 서버가 어떤 Spec을 가진 데이터를 주고받는지에 대한 문서작업이 꼭 필요하다. 하지만 이런 문서작업은 굉장히 시간이 많이들고, API가 수정될 때마다 문서도 같이 수정해줘야 하는 번거로움을 동반한다. 스웨거(Swagger)는 Open Api Specification(OAS)를 위한 프레임워크로 API들이 가지고 있는 스펙(spec)을 명세, 관리할 수 있는 프로젝트이다. 1. Swagger 아래의 사진은 Swagger가 적용된 화면이다. 위 사진처럼 URL 리스트들의 목록을 바로 확인을 할 수가 있다. 2. Swagger 설정 1. 의존성 추가 - Spring..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/kZhVN/btqF2SgKjxA/jV5dikkEngotPJHcWA51Kk/img.png)
생산성 향상을 위한 IntelliJ 단축키 정리 1. 포커스 F2 다음 오류, 경고, 제안으로 점프함 Alt + 1 프로젝트 창이 열리고 포커스가 위치함 트리 탐색 및 검색에 유용 Esc를 누르면 포커스가 다시 에디터로 복귀됨 Ctrl + W / Ctrl + Shift + W 선택 영역 확장 / 축소 Ctrl + Shift + ←→ 영역 선택(단어 단위) 2. 검색 Ctrl + E 최근 실행했던 파일 목록을 보여준다. Ctrl + B 코드 안에서 다른 코드로 이동 Ctrl + left Click 과 같은 기능 Shift + Shift 프로젝트내 모든 내용 검색 Ctrl + Shift + F 프로젝트내 모든 Path 검색 (코드 검색) 3. 라인 수정 Alt + Shift + ↑↓ 라인 단위로 옮기기 Ct..