Spring Boot이 application.yml config를 로드하지 않습니다.
간단한 메인 앱이 있습니다.
@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = "dreamteam.eho")
@Import({EhoConfig.class})
public class MainApp implements CommandLineRunner, ApplicationContextAware {
구성 포함:
@Configuration
@EnableConfigurationProperties({RootProperties.class})
public class EhoConfig {
}
속성:
@ConfigurationProperties("root")
public class RootProperties {
private String name;
구성을 로드하려고 합니다.
--spring.config.location=file:///E:/.../eho-bot/props/ --spring.profiles.active=eho
경로가 정확합니다.하지만 yml이 로드되지 않았습니다.
application-eho.yml 파일:
logging:
file: D:/java/projects/telegram-bots/eho.log
level:
dreamteam.eho: INFO
org.springframework: DEBUG
root:
name: EHO-BOT
앱이 인수로 실행되지만 모든 속성이 null입니다.로깅 속성이 적용되지 않음, out:
--spring.config.location=file:///E:.../eho-bot/props/
--spring.profiles.active=eho
--spring.output.ansi.enabled=always
다음 방법으로 시도:
다음과 같은 응용프로그램 구조를 따릅니다.
App
└── src
| ├── main
| ├── java
| │ └── <base-package>
| │ └── Application.java (having public static void main() method)
| │
| ├── resources
| ├─── application-eho.yml
|
├──── pom.xml
Application.java 콘텐츠
@SpringBootApplication
@RestController
public class Application {
public static void main(String[] args) {
System.setProperty("spring.config.name", "application-eho");
SpringApplication.run(Application.class, args);
}
}
application-eho.yml 파일:
logging:
file: D:/java/projects/telegram-bots/eho.log
level:
dreamteam.eho: INFO
org.springframework: DEBUG
root:
name: EHO-BOT
이 경우 스프링 부트를 사용해야 합니다.
@SpringBootApplication
public class ReTestsApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(ReTestsApplication.class);
application.setWebEnvironment(false);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
}
public void run(String... args) throws Exception {
}
}
webEnvironmet=false 및 BannerMode=off(어플리케이션 삭제)를 사용합니다.
문서, https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-externalize-configuration 참조
을 사용하는 경우PropertySource
주석을 추가할 수 없습니다.기본적으로 yml 파일 형식을 지원하지 않습니다.사용하다PropertySourceFactory
하기와 같이
public class YamlPropertySourceFactory implements PropertySourceFactory {
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource)
throws IOException {
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(encodedResource.getResource());
Properties properties = factory.getObject();
return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
}
}
그런 다음 속성 원본 주석에서 동일한 내용을 다음과 같이 참조하십시오.
@PropertySource(value = "classpath:foo.yml", factory = YamlPropertySourceFactory.class)
언급URL : https://stackoverflow.com/questions/36761956/spring-boot-doesnt-load-application-yml-config
'programing' 카테고리의 다른 글
그래프QL 큰 정수 오류:Int는 32비트 부호가 없는 정수 값을 나타낼 수 없습니다. (0) | 2023.07.16 |
---|---|
파이썬에서 이미지의 exif 데이터를 읽으려면 어떻게 해야 합니까? (0) | 2023.07.16 |
data.table에서 이름으로 열을 삭제하려면 어떻게 해야 합니까? (0) | 2023.07.16 |
판다 데이터 프레임에서 범주형 데이터 변환 (0) | 2023.07.16 |
OOP 및 C의 인터페이스 (0) | 2023.07.16 |