스프링 부트 프로파일 사용 방법
있다application.yml
,application-dev.yml
...application-dev.yml
- 명령어 maven을
mvn spring-boot:run -Dspring.profiles.active=dev
않고 할 수 .mvn spring-boot:run
★★★★★★★★★★★★★★★★★? - 에는 「아니다」라고 쓰여 있다.
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=dev
profile을 한 로그가 합니다.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"
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
'programing' 카테고리의 다른 글
Java에서 인수를 사용하는 싱글턴 (0) | 2022.09.25 |
---|---|
봄 대 EJB스프링이 EJB를 대체할 수 있습니까? (0) | 2022.09.25 |
웅변 -> first() if -> exists() (0) | 2022.09.22 |
팝업을 위한 작업 디렉토리를 지정하려면 어떻게 해야 합니까? (0) | 2022.09.22 |
Visual Studio Code에서 생성된 vue-cli 3 앱 디버깅 (0) | 2022.09.22 |