programing

스프링 부트에서 application.properties에서 application.yml로 변환하는 방법은 무엇입니까?

powerit 2023. 7. 2. 21:04
반응형

스프링 부트에서 application.properties에서 application.yml로 변환하는 방법은 무엇입니까?

저는 매우 간단한 Spring Boot 앱과 application.properties를 가지고 있으며, 이제 application.yml로 이동하고 싶습니다.

다음은 application.yml 파일입니다.

spring:
    datasource:
        url: jdbc:mysql://localhost:3306/employee_directory
        username: student
        password: Password123

그래서 application.properties 파일을 삭제하고 application.yml 파일을 작성했습니다.앱을 실행하면 다음과 같은 예외가 발생합니다.

   20:31:22.446 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:524)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:473)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:443)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$6(ConfigFileApplicationListener.java:425)
    at java.lang.Iterable.forEach(Iterable.java:75)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$7(ConfigFileApplicationListener.java:425)
    at java.lang.Iterable.forEach(Iterable.java:75)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:422)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:321)
    at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:202)
    at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:186)
    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:176)
    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:164)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:75)
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:340)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:304)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202)
    at com.dgs.springboot.SpringBootRESTJPA.SpringBootRestJPAApplication.main(SpringBootRestJPAApplication.java:10)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
 in 'reader', line 2, column 1:
        datasource:
    ^

    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:419)
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227)
    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:586)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:124)
    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236)
    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144)
    at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:123)
    at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:547)
    at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:160)
    at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:134)
    at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:75)
    at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:49)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:542)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:497)
    ... 28 common frames omitted

이 application.yml 파일을 사용하려면 코드를 수정해야 할 것 같은데 어떻게 해야 할지 모르겠습니다.

다음은 pom.xml입니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.dgs.springboot</groupId>
    <artifactId>SpringBootRESTHibernate</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringBootRESTHibernate</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <!-- Add work around for Eclipse bug -->
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- This is used for packaging and running our app -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

어떤 피드백이든 감사하겠습니다.감사해요!

스프링부츠의 완화된 바인딩 규칙을 사용하여 스프링부츠 yaml, 속성 및 환경 변수를 변환하는 온라인 변환 도구(https://env.simplestep.ca/) 를 구축했습니다.

enter image description here

위해서intellij-IDEA> settings > 한 후 다음과 같은 합니다: 파일 > 설으로 > 플인이동 후다검니같색합.Properties to YAML Converter 시작한 오른쪽 단추로 하면 " to 이라는.

들여쓰기에 탭을 사용하는지 확인합니다.이는 YAML 사양에서 허용되지 않습니다.

시스템마다 탭을 다르게 취급하므로 휴대성을 유지하기 위해 들여쓰기에 탭 문자를 사용해서는 안 됩니다.대부분의 최신 편집기는 탭 키를 누르면 적절한 수의 공백이 삽입되도록 구성될 수 있습니다.

명령줄 도구 properties2yaml을 사용하여 속성에서 yaml로 일반적인 자동(및 수정) 변환을 수행할 수 있습니다.

부동산을 YAML로 전환할 수 있는 좋은 온라인 도구를 찾았습니다.

YAML 온라인 컨버터에 대한 속성

enter image description here

Eclipse 또는 STS를 사용하면 매우 간단합니다.

의상에맞메열하기됩니다면만뉴를는에서 만 하면 ..properties파일을 선택하고 "Maml 파일로 변환"을 선택합니다.

파일이 자동으로 변환됩니다.상황에 맞는 메뉴에 이 기능이 없으면 Yaml 플러그인을 설치해야 합니다.

Help menu-> Eclipse market place.

내 생각엔 너의datasource.url 따옴표로 .사용해 보십시오.

  ...
  url: 'jdbc:mysql://localhost:3306/employee_directory'
  ...

또한 위에서 지적했듯이 들여쓰기에는 일반적으로 수준당 두 개의 공백을 사용해야 합니다.

행운을 빕니다.

이것은 다른 개발자들에게 도움이 될 수 있는 추가적인 답변일 뿐입니다.

속성 파일을 YML 파일로 변환하는 더 좋고 쉬운 도구를 찾았습니다. 속성에서 yml로 변환합니다.

.properties 파일을 업로드한 다음 Choose To YML file 옵션을 업로드해야 합니다. 그러면 꽤 좋은 yml 파일이 생성됩니다.이 도구는 Yml to XML, Yml to Properties, CSV, JSON 등과 같은 많은 다른 형식도 지원합니다.

파일application.yml루트 폴더에 있어야 합니다.resources.

IntelliJ에서 실행되는 Spring 프로젝트에서 비슷한 답을 찾는 다른 사람들에게는 application.properties의 확장자를 application.yml로 변경하는 것만으로 작동합니다.제 경우 파일이 비어 있어서 아무것도 변경할 필요가 없었고 application.yml을 제대로 사용할 수 있었습니다.

언급URL : https://stackoverflow.com/questions/57465865/how-to-convert-from-application-properties-to-application-yml-in-spring-boot

반응형