From ee1f20641a1de8233334760bd7ff2817bd82ae59 Mon Sep 17 00:00:00 2001 From: Uno Date: Tue, 13 Jul 2021 05:20:59 +0900 Subject: [PATCH] Experiment #3 - configuration properties in variety of methods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 여러 방법으로 properties 사용 방법을 실험 행한 실험은: * actuator endpoint 전부 개방 * `@ConstructorBinding` -> 2.2 기능 * `@DefaultValue` -> 2.2 기능 * `@DurationUnit`을 `@ConstructorBinding` 생성자에 사용 * `@name` * `.properties` 에 yaml 처럼 문서 구분하기 * 프로파일 설정 * 부트 프로퍼티 변화: `spring.profiles` -> `spring.config.activate.on-profile` * `spring.config.import` * 여러개 `spring.config.import` * config tree * 확장자 없는 properties 파일 --- ...stcampusSpringBootPracticeApplication.java | 2 ++ .../properties/CustomProperties.java | 29 +++++++++++++++++++ .../service/SortService.java | 6 ++-- src/main/resources/application.properties | 8 +++++ src/main/resources/my | 1 + src/main/resources/tree/iam/duration | 1 + 6 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/fastcampus/springbootpractice/properties/CustomProperties.java create mode 100644 src/main/resources/my create mode 100644 src/main/resources/tree/iam/duration diff --git a/src/main/java/com/fastcampus/springbootpractice/FastcampusSpringBootPracticeApplication.java b/src/main/java/com/fastcampus/springbootpractice/FastcampusSpringBootPracticeApplication.java index 581db64..0e33857 100644 --- a/src/main/java/com/fastcampus/springbootpractice/FastcampusSpringBootPracticeApplication.java +++ b/src/main/java/com/fastcampus/springbootpractice/FastcampusSpringBootPracticeApplication.java @@ -2,7 +2,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; +@ConfigurationPropertiesScan @SpringBootApplication public class FastcampusSpringBootPracticeApplication { diff --git a/src/main/java/com/fastcampus/springbootpractice/properties/CustomProperties.java b/src/main/java/com/fastcampus/springbootpractice/properties/CustomProperties.java new file mode 100644 index 0000000..018ac12 --- /dev/null +++ b/src/main/java/com/fastcampus/springbootpractice/properties/CustomProperties.java @@ -0,0 +1,29 @@ +package com.fastcampus.springbootpractice.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.ConstructorBinding; +import org.springframework.boot.context.properties.bind.DefaultValue; +import org.springframework.boot.context.properties.bind.Name; +import org.springframework.boot.convert.DurationUnit; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; + +@ConstructorBinding +@ConfigurationProperties("iam") +public class CustomProperties { + + /** + * 와아 이건 configuration processor 테스트 + */ + private final Duration duration; + + public CustomProperties(@DefaultValue("1") @DurationUnit(ChronoUnit.MILLIS) @Name("duration") Duration duration) { + this.duration = duration; + } + + public Duration getDuration() { + return duration; + } + +} \ No newline at end of file diff --git a/src/main/java/com/fastcampus/springbootpractice/service/SortService.java b/src/main/java/com/fastcampus/springbootpractice/service/SortService.java index 1b1bc8a..cca967e 100644 --- a/src/main/java/com/fastcampus/springbootpractice/service/SortService.java +++ b/src/main/java/com/fastcampus/springbootpractice/service/SortService.java @@ -1,6 +1,7 @@ package com.fastcampus.springbootpractice.service; import com.fastcampus.springbootpractice.logic.Sort; +import com.fastcampus.springbootpractice.properties.CustomProperties; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -12,9 +13,10 @@ public class SortService { private final Sort sort; - public SortService(@Qualifier("bubbleSort") Sort sort) { - this.sort = sort; + public SortService(@Qualifier("bubbleSort") Sort sort, CustomProperties customProperties) { + System.out.println("프로퍼티: " + customProperties.getDuration().toMillis() + " ms"); System.out.println("구현체: " + sort.getClass().getName()); + this.sort = sort; } public List doSort(List list) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 728ad00..bccd620 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,9 @@ logging.logback.rollingpolicy.file-name-pattern=rolling.txt +management.endpoints.web.exposure.include=* +spring.config.import=classpath:my[.properties],configtree:/Users/Uno/Documents/github/fastcampus-spring-boot-practice/src/main/resources/tree/ +spring.profiles.active=test + +#--- + +spring.config.activate.on-profile=fastcampus | test +iam.duration=5s diff --git a/src/main/resources/my b/src/main/resources/my new file mode 100644 index 0000000..71b209c --- /dev/null +++ b/src/main/resources/my @@ -0,0 +1 @@ +iam.duration=10s \ No newline at end of file diff --git a/src/main/resources/tree/iam/duration b/src/main/resources/tree/iam/duration new file mode 100644 index 0000000..36c172f --- /dev/null +++ b/src/main/resources/tree/iam/duration @@ -0,0 +1 @@ +12s \ No newline at end of file