programing

스프링 부트 프로파일 사용 방법

projobs 2022. 9. 25. 10:46
반응형

스프링 부트 프로파일 사용 방법

있다application.yml ,application-dev.yml...application-dev.yml

  1. 명령어 maven을 mvn spring-boot:run -Dspring.profiles.active=dev않고 할 수 .mvn spring-boot:run★★★★★★★★★★★★★★★★★?
  2. 에는 「아니다」라고 쓰여 있다.java -jar XXX.jar --spring.profiles.active=dev가 있고,했습니다.-Dspring.profiles.active=dev하지만 효과가 없다.그리고 내 프로젝트에서, 나는java -jar XXX.jar은 하는데, 리리지 it it 를 사용하면java -jar XXX.jar --spring.profiles.active=devprofile을 한 로그가 합니다.java -jar XXX.jar 말해 주세요APPLICATION FAILED TO START

그럼 어떻게 두 가지 문제를 해결할까요?고마워~

질문을 완전히 이해했는지 확실하지 않지만 Spring Boot에서 프로필에 대한 몇 가지 세부 정보를 제공하여 답변해 보겠습니다.

의 예에서는, , #1 의 Maven 할 수 .-Drun.profiles.

편집: Spring Boot 2.0 이상용run.spring-boot.run ★★★★★★★★★★★★★★★★★」run.profiles.spring-boot.run.profiles

mvn spring-boot:run -Dspring-boot.run.profiles=dev

https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/maven-plugin/examples/run-profiles.html

#2 예에서는 jar 이름 뒤에 액티브프로파일을 정의합니다.실행 중인 jar의 이름 앞에 JVM 인수를 제공해야 합니다.

java -jar -Dspring.profiles.active=dev XXX.jar

일반 정보:

다 요?application.yml a. a. a.application-dev.yml를한 dev프로파일은 실제로 두 구성 파일을 로드합니다.값:application-dev.yml는, 에서 하는 것과 .application.yml, 의 값yml파일이 로드됩니다.

액티브 프로파일을 정의하는 방법에는 여러 가지가 있습니다.

, 하면 된다, 이렇게 하면 됩니다.-Dspring.profiles.active사용할 수 있습니다..SPRING_PROFILES_ACTIVE " " " "spring.profiles.active시스템 속성.

상세한 것에 대하여는, https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-set-active-spring-profiles 를 참조해 주세요.

Spring Boot Maven 플러그인을 사용하는 경우 다음을 수행합니다.

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

(https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html)

Spring Boot v2+ 이후

다음 대체 방법은 Spring Boot v2.0.0 이후에 사용할 수 있습니다.

Spring Boot Maven 플러그인 사용

명령줄 인수를 다음과 같이 지정할 수 있습니다.

mvn spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=dev"

다음과 같이 JVM 인수를 지정할 수 있습니다.

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"

java -jar

java -Dspring.profiles.active=dev -jar app.jar 파라미터VM 파라미터)

또는

java -jar app.jar --spring.profiles.active=dev(프로그램 파라미터)

Windows Powershell에 관한 주의사항

파워셸따라서 마침표를 해석하는 방법에 따라 오류가 발생합니다.java -D"spring.profiles.active=dev" -jar app.jar

여기에는 3개의 .yml 파일이 필요하지 않습니다.application.yml 파일과 쓰기 프로파일의 고유 속성을 각각3개의 하이픈(---)으로 구분하여 동일한 속성을 설정할 수 있습니다.

다음으로 현재 활성 프로파일을 선택하기 위해 다음과 같이 application.yml 파일에서도 지정할 수 있습니다.

spring:
  profiles:
    active:
    - local

그러나 환경 변수(예: SPRING_PROFILES_ACTIVE = dev)를 설정하면 이 구성이 재정의됩니다.


다음은 요건에 맞는 샘플파일입니다.

# include common properties for every profile in this section

server.port: 5000 

spring:
  profiles:
    active:
    - local

---
# profile specific properties

spring:
  profiles: local

  datasource:
    url: jdbc:mysql://localhost:3306/
    username: root
    password: root

---
# profile specific properties

spring:
  profiles: dev

  datasource:
    url: jdbc:mysql://<dev db url>
    username: <username>
    password: <password>

maven을 사용하는 경우 pom.xml 내에서 다음과 같이 프로파일을 정의합니다.

<profiles>
<profile>
    <id>local</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <jdbc.url>dbUrl</jdbc.url>
        <jdbc.username>dbuser</jdbc.username>
        <jdbc.password>dbPassword</jdbc.password>
        <jdbc.driver>dbDriver</jdbc.driver>
    </properties>
</profile>
<profile>
    <id>dev</id>
    <properties>
        <jdbc.url>dbUrl</jdbc.url>
        <jdbc.username>dbuser</jdbc.username>
        <jdbc.password>dbPassword</jdbc.password>
        <jdbc.driver>dbDriver</jdbc.driver>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>
    </dependencies>
</profile>
<profile>
    <id>prod</id>
    <properties>
        <jdbc.url>dbUrl</jdbc.url>
        <jdbc.username>dbuser</jdbc.username>
        <jdbc.password>dbPassword</jdbc.password>
        <jdbc.driver>dbDriver</jdbc.driver>
    </properties>
</profile>

기본적으로는 [프로파일 없음]이 선택되어 있으면 로컬프로파일이 항상 사용됩니다.

Spring Boot 2.x.x에서 특정 프로파일을 선택하려면 다음 명령을 사용합니다.

mvn spring-boot:run -Dspring-boot.run.profiles=dev

특정 프로파일의 속성을 사용하여 빌드/컴파일하려면 다음 명령을 사용합니다.

mvn clean install -Pdev -DprofileIdEnabled=true

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

** 출처 - **https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html

기본적으로는 여러 응용 프로그램 - {environment.properties가 프로젝트 내에 존재할 때 필요합니다.기본적으로 명령줄에서 -Drun.profiles를 전달했거나 activeByDefault true를 전달한 경우입니다.

 <profile>
    <id>dev</id>
    <properties>
        <activatedProperties>dev</activatedProperties>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

위와 같이 정의된 항목은 기본적으로 application.properties를 선택하지 않습니다.그렇지 않으면 -Drun.profiles={dev/stage/prod}를 추가하여 선택해야 합니다.

TL;DR

mvn spring-boot:run -Drun.profiles=dev

다음과 같은 하나 application.properties(yml)에서 프로파일에 따라 속성을 지정할 수 있습니다.그리고나서mvn clean spring-boot:run -Dspring.profiles.active=dev올바르게 동작합니다.한텐 가 있어 ★★★★★★★★

메이븐을 사용한다면

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <profiles>
                        <profile>dev</profile>
                    </profiles>
                </configuration>
            </plugin>
        </plugins>
    </build>

이 dev를 활성 프로파일로 설정

./mvnw spring-boot:run

dev가 액티브프로파일로 설정됩니다.

응용 프로그램을 실행하는 데 필요한 각 환경(예: dev,qa,stg)의 리소스 디렉토리에 특정 .yml 파일을 만듭니다.리소스 디렉토리의 .yml 파일 이미지

spring-boot-maven-plugin 2.0.5를 사용하는 경우.pom.xml 파일의 RELEASE는 다음과 같이 의존관계 태그에 프로파일을 추가할 수 있습니다.image of pom.xml spring-boot-maven-maps (복수의 프로파일태그를 사용하여 여러 프로파일을 설정할 수 있습니다)

그런 다음 다음 명령을 사용하여 프로젝트를 빌드하고 실행할 수 있습니다.

1) mvn clean install
2) mvn spring-boot:run -Dspring-boot.run.default==qa

그러면 프로젝트 실행 중에 기본 프로파일이 qa로 설정되어 있는 것을 알 수 있습니다.어플리케이션 실행기본 프로파일이 표시됩니다.

Intelij 관련 작업: 키보드 단축키를 설정하는 방법을 모르기 때문에mvn spring-boot:run -Dspring.profiles.active=dev이 작업을 수행해야 합니다.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <jvmArguments>
            -Dspring.profiles.active=dev
        </jvmArguments>
    </configuration>
</plugin>

@Profile 주석을 사용하면 지정된 프로파일이 하나 이상 활성화되어 있을 때 컴포넌트가 등록 대상임을 나타낼 수 있습니다.위의 예를 사용하여 다음과 같이 dataSource 설정을 다시 작성할 수 있습니다.

@Configuration
@Profile("dev")
public class StandaloneDataConfig {

    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.HSQL)
            .addScript("classpath:com/bank/config/sql/schema.sql")
            .addScript("classpath:com/bank/config/sql/test-data.sql")
            .build();
    }
}

그리고 다른 하나는:

@Configuration
@Profile("production")
public class JndiDataConfig {

    @Bean(destroyMethod="")
    public DataSource dataSource() throws Exception {
        Context ctx = new InitialContext();
        return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
    }
}

Intelij IDEA에서 "-Dspring-boot.run.profiles=foo,local"을 사용합니다.그건 효과가 있다.2개의 프로파일이 "foo and local"로 설정됩니다.

기동 버전 「2.3.2」로 확인.RELEASE" & Intelij IDEA CELEASE 。

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

mvn spring-boot: run을 사용한 프로파일 설정 여기에 이미지 설명 입력

환경 변수 설정 여기에 이미지 설명 입력

또는 다음 행을 추가하여 application.properties 파일에서 프로파일을 직접 지정할 수도 있습니다.

spring.spring.active=spring

프로파일은 Spring Boot 속성 파일과 연계하여 동작합니다.기본적으로는 Spring Boot은 src/main/resources 디렉토리에 있는 application.properties라는 파일을 해석하여 설정 정보를 식별합니다.

첫 번째 작업은 활성 프로파일(즉, 현재 앱을 실행하고 있는 프로파일)에 대응하는 다른 환경 고유의 속성 파일을 사용하도록 Spring에게 지시하는 파라미터를 해당 파일에 추가하는 것입니다.이를 수행하려면 application.properties 파일에 다음 항목을 추가합니다.

spring.profiles.active=@activatedProperties@

이제 DEV 프로파일과 PROD 프로파일에서 사용하는2개의 새로운 환경 고유의 속성 파일(기존 application.properties 파일과 같은 경로)을 작성해야 합니다.이러한 파일에는 다음 이름을 지정해야 합니다.

application-dev.properties

application-module.properties

어느 경우든 prod를 액티브프로파일로 지정하면 설정 목적으로 application-prod.properties 파일이 선택됩니다.

언급URL : https://stackoverflow.com/questions/40060989/how-to-use-spring-boot-profiles

반응형