JAVA(244)
-
[Spring][IoC] MessageSource
1. MessageSource란 무엇인가? MessageSource는 국제화(i18n) 기능을 제공하는 인터페이스입니다 메시지를 다국화하는 방법을 정의합니다. 메시지 파일을 모아놓고 각 국가마다 지역화함으로써 각 지역에 맞춘 메시지를 제공할 수 있습니다. 2. 메시지 설정 파일 준비하기 메시지 설정 파일을 준비하기 위해서는 messages.properties 파일들을 준비해야합니다. *.properties 파일에 [파일이름]_[언어]_[국가].properties 형식으로 메시지 파일을 추가합니다. messages.properties : 기본 메시지. 시스템의 언어 및 지역에 맞는 프로퍼티 파일이 존재하지 않는 경우에 선택됨 messages_en_US.properties : 영어 메시지 messages_k..
2022.09.13 -
[Spring][IoC] Environment, 프로파일 및 프로퍼티
1. 프로파일(Profile)이란 무엇인가? 프로파일은 빈(Bean)들의 그룹을 의미하는데 애플리케이션 실행시 프로파일을 설정하여 특정한 빈들의 그룹을 실행시킬 수도 있고 아니면 프로파일을 설정하지 않아서 런타임시 빈들을 활성화시키지 않을 수 있습니다. 예를 들어 테스트 환경에서는 A라는 빈을 사용하고, 배포환경에서는 A 빈을 사용하지 않고 싶다면 A 빈에 프로파일을 정의하여 배포시 비활성화 시킬 수 있습니다. 2. 프로파일 정의하기 프로파일을 정의하는 방법 클래스에 정의 @Configuration @Profile("test") @Component @Profile("test") 메서드에 정의 @Bean @Profile("test") @Repository @Profile("test") // 프로파일 정의 ..
2022.09.01 -
빈(Bean)의 스코프
1. 스코프의 종류 싱글톤 : 어떤 클래스의 인스턴스 개수가 단 한개만 생성하는 디자인 패턴 프로토타입 : 어떤 클래스의 인스턴스를 생성할때마다 새로 생성하는 패턴 웹 관련 스코프 Request : 웹 요청이 들어오고 나갈때까지 유지되는 스코프 Session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 2. 스프링에서 빈의 스코프는 기본적으로 싱글톤 예를 들어 Single이라는 클래스에 @Component 어노테이션을 적용하면 Single 클래스는 빈으로 등록됩니다. 이때 빈의 스코프를 따로 지정하지 않으면 싱글톤 타입으로 설정됩니다. @Component public class Single { } @SpringBootT..
2022.08.31 -
[Spring][IoC] @Autowired 어노테이션
1. @Autowired 어노테이션은 무엇인가? 필요한 의존 객체의 "타입"에 해당하는 빈을 IoC 컨테이너에서 탐색하여 주입하는 어노테이션 옵션 required : 기본값 true, false로 설정하게 되면 빈을 탐색하지 못할시 주입하지 않고 넘어갑니다. 2. @Autowired 어노테이션 사용 위치 생성자 세터(setter) 필드 // 주입 방법 1 @Autowired public BookService(BookRepository bookRepository){ this.bookRepository = bookRepository; } // 주입 방법 2 @Autowired public void setBookRepository(BookRepository bookRepository){ this.bookRep..
2022.08.29 -
[java][lambda] 람다식(Lambda Expression)
1. 람다식이란 무엇인가? 람다식(Lambda Expression)이란 메서드를 하나의 '식(expression)'으로 표현한 것입니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'이라고도 합니다. 예를 들어 1~5사이의 랜덤한 수를 반환하는 메서드를 정의한다면 다음과 같이 정의할 수 있을 것입니다. int method(){ return (in)(Math.random()*5)+1; } 위와 같은 메서드 정의를 다음과 같이 람다식으로 표현할 수 있습니다. () -> (int)(Math.random() * 5) + 1) 람다식의 특징 클래스의 생성 없이 람다식 자체만으로 메서드의 역할을 수행할 수 있음 람다식은 메서드의 매개변수..
2022.08.23 -
[springboot][Gradle] 자동 설정 만들기 #2 @ConfigurationProperties
이전글에서는 외부 라이브러리 클래스의 빈을 등록하기 위해서 설정 파일 클래스를 정의하고 빈을 정의하였습니다. 이번글에서는 외부 라이브러리와 동일한 이름의 빈을 프로젝트에 정의하고 어떤 결과가 출력되는지 봅니다. 그리고 동일한 이름의 빈을 프로젝트에 명시적으로 정의하지 않고 설정 파일을 이용해서 외부 라이브러리의 빈의 값을 설정하는 방법을 알아봅니다. 1. 자동설정의 문제점 : 명시적인 빈의 무시 외부 라이브러리 자동설정 외부 라이브러리인 "yonghwan-spring-boot-starter"의 Holoman 클래스 빈을 다음과 같이 정의되어 있다고 가정합니다. @Configuration public class HolomanConfiguration { @Bean public Holoman holoman()..
2022.08.17