@구성 속성 대 @PropertySource 대 @Value
스프링/스프링 부츠가 처음입니다.의 키-값 쌍 데이터를 사용합니다.application.properties
/application.yml
자바 파일로.나는 우리가 사용할 수 있다는 것을 알고 있습니다.@Value
모든 POJO 클래스에서 필드의 기본값을 설정합니다.application.properties
또는application.yml
파일.
Q1) 그런데 왜 다른 두 가지가 필요합니까? @ConfigurationProperties
그리고.@PropertySource
.
Q2)@ConfigurationProperties
그리고.@PropertySource
두 가지 모두에서 언급된 외부 데이터를 로드하는 데 사용할 수 있습니다.application.properties
또는application.yml
파일? 아니면 제한사항?
PS: 저는 인터넷에서 검색을 해봤지만 명확한 답을 얻지 못했습니다.
@ConfigurationProperties
POJO 빈에서 필드 또는 세터에 속성을 매핑하는 데 사용됩니다.그런 다음 빈을 사용하여 응용 프로그램 로직의 속성 값에 액세스할 수 있습니다.
@PropertySource
속성 파일을 참조하여 Spring 환경에 로드합니다(@ConfigurationProperties 또는 @Value에서 사용할 수 있음).
@Value
특정 속성 값을 키로 변수(구성원 필드 또는 생성자 인수)에 주입하는 것입니다.
@Value("${spring.application.name}")
@application.properties/yml 파일에 일치하는 키가 없으면 값이 예외를 던집니다.자산 가치를 엄격하게 주입합니다.
예:@Value("${spring.application.namee}")
예외 아래로 던집니다.namee
속성 파일에 필드가 없습니다.
application.properties file
----------------------
spring:
application:
name: myapplicationname
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testValue': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.namee' in value "${spring.application.namee}"
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.namea' in value "${spring.application.namee}"
@ConfigurationProperties(prefix = "myserver.allvalues")
POJO 속성을 주입합니다. 엄격하지 않습니다. 속성 파일에 키가 없으면 속성을 무시합니다.
예:
@ConfigurationProperties(prefix = "myserver.allvalues")
public class TestConfigurationProperties {
private String value;
private String valuenotexists; // This field doesn't exists in properties file
// it doesn't throw error. It gets default value as null
}
application.properties file
----------------------
myserver:
allvalues:
value: sampleValue
나의 연구와 이해를 바탕으로:
@ConfigurationProperties
속성 로드
application.properties
의 속성 이름에 해당하는 필드 이름을 지정합니다.
application.properties
--
@ConfigurationProperties
에서 작동하지 않음@Value
@PropertySource
지정한 파일에서 속성 로드
와 함께 사용할 수 있습니다.
@Value
또는@Autowired Environment env;
@Value
와 함께 사용됩니다.
application.properties
application.properties
기본적으로 로드됩니다(에서 지정할 필요 없음).@PropertySource
)
언급
https://mkyong.com/spring-boot/spring-boot-configurationproperties-example/
https://mkyong.com/spring/spring-propertysources-example/
-
SpringApplication은 다음 위치에 있는 application.properties 파일에서 속성을 로드하여 SpringEnvironment에 추가합니다.
-
@구성 속성 주석.Spring bean에 배치되면 Spring 환경의 특성에서 해당 bean의 특성을 주입할 수 있음을 지정합니다.
< 봄은 활동 중 >
-
구성 파일을 응용 프로그램 병에 번들로 넣거나 런타임 환경의 파일 시스템에 넣어 Spring Boot 시작 시 로드할 수 있습니다.
Spring Boot은 프로젝트 클래스 경로에서 application.properties 파일을 자동으로 로드합니다.
http://dolszewski.com/spring/spring-boot-application-properties-file/
-
4.1. application.properties: 기본 속성 파일
부팅은 속성 파일에 구성 방식에 대한 일반적인 규칙을 적용합니다.즉, src/main/resources 디렉토리에 application.properties 파일을 저장하기만 하면 자동으로 검색됩니다.그런 다음 로드된 속성을 정상적으로 주입할 수 있습니다.
따라서 이 기본 파일을 사용하면 PropertySource를 명시적으로 등록하거나 Property 파일의 경로를 제공할 필요가 없습니다.
https://www.baeldung.com/properties-with-spring
-
@ConfigurationProperties는 이름을 기준으로 Java 필드를 일부 일치하는 속성에 바인딩해야 함을 스프링으로 나타냅니다.
스프링은 이 주석이 있는 클래스가 스프링 빈이어야 합니다.
언급URL : https://stackoverflow.com/questions/58691325/configurationproperties-vs-propertysource-vs-value
'programing' 카테고리의 다른 글
unbuntu에 최신 버전의 git를 설치하는 중 (0) | 2023.07.01 |
---|---|
typescript 컴파일러(tsc) 명령이 tscconfig에서 작동하지 않습니다. (0) | 2023.06.26 |
JUN 5: 내선 번호에 스프링 구성 요소 주입(모든 콜백 전/모든 콜백 후) (0) | 2023.06.26 |
Angular 5에서 뷰를 렌더링하기 전에 데이터 대기 (0) | 2023.06.26 |
Laravel-Echo가 Vue.js를 통해 개인 채널을 구독하지 않음 (0) | 2023.06.26 |