JAVA/Spring(114)
-
[Springboot] 내장 웹 서버(Embedded Web Servers) #1
개요 각각의 스프링 부트 웹 애플리케이션은 내장 웹 서버를 가지고 있습니다. 이 글에서는 내장 웹 서버를 변경하는 방법이나 포트번호를 변경하는 방법을 소개합니다. 1. 다른 웹 서버 사용하기 많은 스프링 부트 스타터들은 기본적인 내장 컨테이너들을 포함하고 있습니다. "spring-boot-starter-web" 라이브러리에는 "spring-boot-starter-tomcat" 의존성 라이브러리가 있고 톰캣을 포함하고 있습니다. 그러나 "spring-boot-starter-jetty" 또는 "spring-boot-starter-undertow" 라이브러리를 대신 사용하여 내장 웹 서버를 변경할 수 있습니다. "spring-boot-starter-webflux" 라이브러이에는 "spring-boot-star..
2022.09.23 -
[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 -
[springboot][Gradle] 자동 설정 만들기 #2 @ConfigurationProperties
이전글에서는 외부 라이브러리 클래스의 빈을 등록하기 위해서 설정 파일 클래스를 정의하고 빈을 정의하였습니다. 이번글에서는 외부 라이브러리와 동일한 이름의 빈을 프로젝트에 정의하고 어떤 결과가 출력되는지 봅니다. 그리고 동일한 이름의 빈을 프로젝트에 명시적으로 정의하지 않고 설정 파일을 이용해서 외부 라이브러리의 빈의 값을 설정하는 방법을 알아봅니다. 1. 자동설정의 문제점 : 명시적인 빈의 무시 외부 라이브러리 자동설정 외부 라이브러리인 "yonghwan-spring-boot-starter"의 Holoman 클래스 빈을 다음과 같이 정의되어 있다고 가정합니다. @Configuration public class HolomanConfiguration { @Bean public Holoman holoman()..
2022.08.17