개발강의정리/Spring

[스프링 부트 개념과 활용] 4-3. 외부 설정 2부

nineDeveloper 2019. 10. 25.
728x90

스프링 부트 개념과 활용

4. 스프링 부트 활용

포스팅 참조 정보

GitHub

공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다

해당 포스팅에 대한 내용의 GitHub 주소

실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다

https://github.com/freespringlecture/springboot-concept-uses/tree/chap04-03-02-configuration

 

freespringlecture/springboot-concept-uses

백기선님의 스프링 부트 개념과 활용 강의 내용 정리. Contribute to freespringlecture/springboot-concept-uses development by creating an account on GitHub.

github.com

해당 포스팅 참고 인프런 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

스프링 부트 개념과 활용 - 인프런

스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다. 중급 프레임워크 및 라이브러리 Spring Spring Boot 온라인 강의

www.inflearn.com

실습 환경

  • Java Version: Java 11
  • SpringBoot Version: 2.1.2.RELEASE

3. 외부 설정 2부

타입-세이프 프로퍼티 @ConfigurationProperties

  • @Value로 값을 받아오는 것 보다 추천 하지만 @Value는 SpEL 표현식을 사용할 수 있는 장점
  • @ConfigurationProperties으로 여러 properties를 묶어서 읽어올 수 있음
  • 빈으로 등록해서 다른 빈에 주입할 수 있음
    • @EnableConfigurationProperties, @Component, @Bean
  • @ConfigurationProperties를 추가하면 META 정보를 생성해주는 플러그인 설치안내가 뜸

@ConfigurationProperties로 설정한 변수들은 META정보를 생성해줘서 나중에 application.properties에서 자동완성을 지원함

기존방식 아래와 같이 했으나 자동으로 @EnableConfigurationProperties 설정이 되어있으므로 패스

@SpringBootApplication
@EnableConfigurationProperties(FreelifeProperties.class)

Properties 클래스에 @Component 설정을 하여 빈으로 만들어주기만 하면됨

@Component
@ConfigurationProperties("freelife")

아래와 같이 값을 주입받아 가져올 수 있음

@Autowired
FreelifeProperties freelifeProperties;

@Override
public void run(ApplicationArguments args) throws Exception {
    System.out.println("=======================");
    System.out.println(freelifeProperties.getFullName());
    System.out.println(freelifeProperties.getAge());
    System.out.println("=======================");
}

융통성 있는 바인딩

아래와 같이 입력하면 알아서 다 자동 맵핑 해줌

  • context-path (케밥)
  • context_path (언드스코어)
  • contextPath (캐멀)
  • CONTEXTPATH

SpringFramework 가 지원하는 컨버전 서비스를 통해서 기본적으로 타입을 컨버팅 해줌

프로퍼티 타입 컨버전 @DurationUnit

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-conversion-duration

 

Spring Boot Reference Documentation

This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe

docs.spring.io

SpringBoot가 제공하는 독특한한 컨버전 타입
시간정보를 받고 싶을 떄 아래의 타입을 잘 명시해주면 Annotation을 활용하지 않아도 시간정보를 잘가져옴

  • ns for nanoseconds
  • us for microseconds
  • ms for milliseconds
  • s for seconds
  • m for minutes
  • h for hours
  • d for days

프로퍼티 값 검증

FailureAnalyzer Validated 검증 메세지를 출력해줌

  • Class에 @Validated 붙이면 검증가능
  • JSR-303 (@NotNull, ...)

메타정보생성

@Value

  • SpEL 을 사용할 수 있지만...
  • 위에 있는 기능들은 전부 사용 못합니다
728x90

댓글

💲 추천 글