[SPRING] Spring Boot 외부화 속성이 작동하지 않습니다.
SPRINGSpring Boot 외부화 속성이 작동하지 않습니다.
나는 아래 실을보고 거기에 주어진 것들을 따랐다. 여전히 내 속성 재정의가 발생하지 않습니다.
1) 스프링 부트 - 외부 특성 2) 프로파일 특정 속성 사용 가능 3) 스프링 부트 외부 설정
나는 바람둥이 8.0.33과 봄 부팅 스타터 웹에있어 내 setenv.sh에서 이것을 가지고있다.
export JAVA_OPTS="$JAVA_OPTS -Dlog.level=INFO -Dspring.config.location=file:/opt/jboss/apache-tomcat-8.0.33/overrides/ -Dspring.profiles.active=dev"
그리고 overrides 폴더에는 2 개의 파일이 있습니다.
1) application.properties 2) application-dev.properties
application.properties에 단일 항목이 있습니다.
spring.profiles.active=dev
적절한 log.level이이 명령이 작동하고 있음을 의미하는 내 코드로 전달된다는 것을 알았습니다. 그저 내가 오버라이드가 예상대로 일어나지 않는 이유에 관해서는 단서가 없다.
내 작업 공간에 PropertyPlaceholderConfigurer 코드가 없습니다. 1이 필요한지 잘 모르겠다.
도와주세요!!!
해결법
-
==============================
1.속성을 외부화하는 데이 메서드를 사용하지 않습니다. 먼저, 당신의 방법에 대한 제안을 시도해 볼 것이고, 내가 사용하고있는 것을 보여 드리겠습니다.
속성을 외부화하는 데이 메서드를 사용하지 않습니다. 먼저, 당신의 방법에 대한 제안을 시도해 볼 것이고, 내가 사용하고있는 것을 보여 드리겠습니다.
당신의 메소드에 대한 제안은 file : / 대신에 file : /을 Spring과 같이 사용하는 것입니다. 콜론 뒤에 세 개의 슬래시를 전달하지 않으면 속성을 인식하지 못한다는 것을 알았습니다.
지침과 함께 사용할 수있는 샘플 프로젝트를 만들었습니다.
이제 내가 사용하는 방법.
각 프로파일에 대한 설정 파일을 정의하고 src / main / resources 아래에 application.properties 파일을 보관합니다.
그런 다음 각 구성 파일에 @Profile 및 @PropertySource 주석을 사용합니다.
예 :
@Configuration @Profile("dev") @PropertySource("file:///${user.home}/.devopsbuddy/application-dev.properties") public class DevelopmentConfig { @Bean public EmailService emailService() { return new MockEmailService(); } @Bean public ServletRegistrationBean h2ConsoleServletRegistration() { ServletRegistrationBean bean = new ServletRegistrationBean(new WebServlet()); bean.addUrlMappings("/console/*"); return bean; } }
과
@Configuration @Profile("prod") @PropertySource("file:///${user.home}/.devopsbuddy/application-prod.properties") public class ProductionConfig { @Bean public EmailService emailService() { return new SmtpEmailService(); } }
다음과 같이 ApplicationConfig를 호출하는 모든 프로파일에 유효한 구성 파일도 있습니다.
@Configuration @EnableJpaRepositories(basePackages = "com.devopsbuddy.backend.persistence.repositories") @EntityScan(basePackages = "com.devopsbuddy.backend.persistence.domain.backend") @EnableTransactionManagement @PropertySource("file:///${user.home}/.devopsbuddy/application-common.properties") public class ApplicationConfig { }
내 src / main / resources / application.properties 파일은 다음과 같습니다 :
spring.profiles.active=dev default.to.address=me@example.com token.expiration.length.minutes=120
물론 나는 시스템 속성으로 전달하여 spring.profile.active 속성을 외부화 할 수 있지만 내 경우에는 괜찮습니다.
응용 프로그램을 실행할 때 "dev"프로파일을 전달하면 Spring은 DevelopmentConfig 클래스에 정의 된 모든 등록 정보 및 Bean과 ApplicationConfig의 모든 등록 정보를로드합니다. "prod"를 전달하면 ProductionConfig 및 ApplicationConfig 속성이 대신로드됩니다.
저는 보안, 이메일, 데이터 JPA, Amazon Web Services, Stripe 등으로 Spring Boot 웹 사이트를 만드는 방법을 배우고 있습니다. 원할 경우 여기에 관심을 등록 할 수 있으며 등록 과정이 열릴 때 통보를 받게됩니다.
from https://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] java.lang.NoSuchMethodError org.springframework.core.annotation.AnnotationUtils.getAnnotation (0) | 2018.12.20 |
---|---|
[SPRING] HSQL 데이터베이스 사용자가 권한이 없거나 객체를 찾을 수 없음 오류 (0) | 2018.12.20 |
[SPRING] 추상 메서드 오류 (0) | 2018.12.20 |
[SPRING] @SpringBootApplication 주석을 사용하여 구성 (0) | 2018.12.20 |
[SPRING] 이름이 'entityManagerFactory 인 빈을 만드는 중 오류가 발생했습니다. (0) | 2018.12.20 |