프로퍼티
- 다양한 방법으로 정의할 수 있는 설정값
- Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기
1) 다양한 방법으로 정의할 수 있는 설정값
1-1. VM options 설정

VM options : -Dapp.name=spring5 설정
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Autowired
BookRepository bookRepository;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name")); //이 부분!
}
}
출력 결과는 spring5가 된다.
1-2. properties 파일 생성한 다음 프로퍼티 설정

java/main/resource/ 에 app.properties라는 파일을 생성해 설정해준다.
2) Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Autowired
BookRepository bookRepository;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
}
}
@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class Demospring51Application {
public static void main(String[] args) {
SpringApplication.run(Demospring51Application.class, args);
}
}
properties 파일로 설정하는 경우에는 이렇게 @Configuration을 확장하는 애노테이션 밑에 코드를 추가해준다.
프로퍼티에는 우선 순위가 있다.
- StandardServeltEnvironment의 우선순위
- ServeltContext 매개변수
- JNDI (java:comp/env/)
- JVM 시스템 프로퍼티 (-Dkey="value")
- JVM 시스템 환경 변수 (운영 체제 환경 변수)
(test) VM options 설정과 app.properties의 프로퍼티 설정을 같게 한다면 누가 더 우선순위가 높을까?
VM options : -Dapp.name=spring5 / app.properties : app.name=spring
결과는, VM options 가 더 높다. spring5가 출력이 된다.
@PropertySource
- Environment를 통해 프로퍼티 추가하는 방법
app.name=spring
java/resources 에 app.properties 라고 File 형식으로 하나 만들어준다.
package com.example.demospring51;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
@PropertySource("classpath:/app.properties") // **** 프로퍼티 추가 ****
public class Demospring51Application {
public static void main(String[] args) {
SpringApplication.run(Demospring51Application.class, args);
}
}
그런 다음 @Configuration을 확장하는 애노테이션이 붙은 클래스에 @PropertySource("classpath:/app.properties")를 추가해준다.
스프링 부트의 외부 설정 참고
- 기본 프로퍼티 소스 지원 (application.properties)
- 프로파일까지 고려한 계층형 프로퍼티 우선 순위 제공
프로퍼티
- 다양한 방법으로 정의할 수 있는 설정값
- Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기
1) 다양한 방법으로 정의할 수 있는 설정값
1-1. VM options 설정

VM options : -Dapp.name=spring5 설정
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Autowired
BookRepository bookRepository;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name")); //이 부분!
}
}
출력 결과는 spring5가 된다.
1-2. properties 파일 생성한 다음 프로퍼티 설정

java/main/resource/ 에 app.properties라는 파일을 생성해 설정해준다.
2) Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Autowired
BookRepository bookRepository;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
}
}
@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class Demospring51Application {
public static void main(String[] args) {
SpringApplication.run(Demospring51Application.class, args);
}
}
properties 파일로 설정하는 경우에는 이렇게 @Configuration을 확장하는 애노테이션 밑에 코드를 추가해준다.
프로퍼티에는 우선 순위가 있다.
- StandardServeltEnvironment의 우선순위
- ServeltContext 매개변수
- JNDI (java:comp/env/)
- JVM 시스템 프로퍼티 (-Dkey="value")
- JVM 시스템 환경 변수 (운영 체제 환경 변수)
(test) VM options 설정과 app.properties의 프로퍼티 설정을 같게 한다면 누가 더 우선순위가 높을까?
VM options : -Dapp.name=spring5 / app.properties : app.name=spring
결과는, VM options 가 더 높다. spring5가 출력이 된다.
@PropertySource
- Environment를 통해 프로퍼티 추가하는 방법
app.name=spring
java/resources 에 app.properties 라고 File 형식으로 하나 만들어준다.
package com.example.demospring51;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
@PropertySource("classpath:/app.properties") // **** 프로퍼티 추가 ****
public class Demospring51Application {
public static void main(String[] args) {
SpringApplication.run(Demospring51Application.class, args);
}
}
그런 다음 @Configuration을 확장하는 애노테이션이 붙은 클래스에 @PropertySource("classpath:/app.properties")를 추가해준다.
스프링 부트의 외부 설정 참고
- 기본 프로퍼티 소스 지원 (application.properties)
- 프로파일까지 고려한 계층형 프로퍼티 우선 순위 제공