애플리케이션 속성을 정의되지 않음/설정 취소로 재정의합니다.
이것이 유효한 질문인지 잘 모르겠습니다만, 이것이 가능한지 궁금했습니다.
스프링 부트 프로젝트에는 application.properties와 몇 가지 프로파일 고유의 속성이 있습니다.프로파일 고유의 속성은 정의된 application.properties를 application-profile.properties에 정의된 속성으로 덮어쓰고 프로파일 고유의 속성에만 속하는 속성을 추가합니다.아래 그림:
application.properties
key1=value1
key2=value2
application-profile.properties
key1=valueProfile1
key3=valueProfile3
응용 프로그램이 이 프로필에서 시작할 때 표시되는 최종 속성은 다음과 같습니다.
key1=valueProfile1
key2=value2
key3=valueProfile3
즉, 공통 속성과 프로파일 속성이 모두 결합되어 있고 프로파일 속성 값이 공통을 추가 및 재정의합니다.
단, 어떤 시나리오에서 공통 application.properties에서 속성을 정의해야 하는데 특정 프로파일에서 응용 프로그램을 시작할 때 속성을 "정의되지 않음"으로 정의해야 하는 경우 어떻게 해야 합니까?아래 그림:
application.properties
keySpecial=specialValue
key1=value1
key2=value2
application-special.properties
key1=valueSpecial1
//unset or undefine keySpecial
keyAlternateSpecial=specialAlternateValue
key3=valueSpecial3
이 「특수한」프로파일로 애플리케이션을 기동하면, 다음과 같이 최종 속성을 표시할 수 있습니다.
keyAlternateSpecial=specialAlternateValue
key1=valueSpecial1
key2=value2
key3=valueSpecial3
keySpecial은 이 특수 프로파일에서 응용 프로그램을 실행할 때 정의되지 않으며 존재하지도 않습니다.
이게 가능합니까?
주의: 공통 application.properties에서 "keySpecial"을 정의하는 것을 자제하고 다른 모든 프로파일 고유의 속성에서 정의할 수 있습니다.또한 "특수" 프로파일 속성에만 "Key Alternate Special"을 지정하십시오.
상세 정보:
이에 대해 궁금했던 시나리오는 spring boot datasource jndi 속성입니다.문서에서
spring.datasource.jndi-name= # JNDI location of the datasource. Class, url, username & password are ignored when set.
이 속성이 존재하기만 하면 다른 데이터 소스 속성(class,url,username,password)이 설정되어 있어도 응용 프로그램은 무시합니다.
application.properties에서 jndi 속성을 삭제할 수 없습니다.대신 설정 해제/정의 해제하고 다른 데이터 소스 속성(class,url,username,password)을 "특수한" 프로파일 속성에 추가하고 싶었습니다.
application.property에서 spring.datasource.jndi-name을 삭제하기 위해 설정을 할 수 있습니다.spring.datasource.jndi-name=false
. 쪽입니니다다@ConditionalOnProperty(prefix = "spring.datasource", name = "jndi-name")
자동 구성 클래스가 활성화되지 않습니다.Conditional On Property javadoc 입니다.
다른 프로파일이 정의되어 있지 않을 때 활성화되는 기본 프로파일로 JNDI 속성을 정의함으로써 개발 중에 JNDI 없이 다른 데이터 소스를 사용할 수 있다는 점을 유스케이스에서 해결했습니다.
여기 제 가 있습니다.application.yml
파일, 이게 당신에게 적합한지 모르겠네요.
spring:
jpa:
database: POSTGRESQL
hibernate:
ddl-auto: none
# Default profile, active by default on JBoss since no spring profiles are activated
---
spring:
profiles: default
datasource:
jndi-name: java:jboss/datasources/anagraficaDS
# Development configuration
---
spring:
profiles: development
datasource:
platform: postgres
url: jdbc:postgresql://localhost:5432/my-db
username: root
password: secret
driverClassName: org.postgresql.Driver
파티에 늦었지만:
Spring Boot 2.4 이후로는 프로파일 그룹이 권장됩니다.
놓다를 keySpecial=specialValue
기타 설정의 프로파일로 을 (라고 합니다)라고 special
.
그런 다음 필요한 프로파일에 추가합니다.이 a
,b
, , , , 입니다.c
한 것은 「」special
를 지다a
★★★★★★★★★★★★★★★★★」b
그럼아니다,아니다,아니다,아니다,아니다,아니다.
spring.profiles.group.profilea[0]=special
spring.profiles.group.profileb[0]=special
언급URL : https://stackoverflow.com/questions/39702392/override-an-application-property-to-undefined-unset
'source' 카테고리의 다른 글
spring.cloud.config.enabled를 통해 스프링 클라우드 구성을 해제할 수 없음: false (0) | 2023.03.10 |
---|---|
React에서 후크를 사용하여 이벤트 핸들러를 만드는 올바른 방법입니까? (0) | 2023.03.10 |
스프링 부트에서는 확장자가 .original인 jar 또는 war 파일이 생성되는 이유는 무엇입니까? (0) | 2023.03.10 |
angular.js $http 서비스를 지연합니다. (0) | 2023.03.10 |
IPython 노트북의 예쁜 JSON 포맷 (0) | 2023.03.10 |