-
외부 설정 1부백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 4. 13. 08:27반응형
외부 설정
application.properties
key - value 형태로 properties에 작성
@Component public class SampleRunner implements ApplicationRunner{ @Value("${jinseok.name}") private String name; @Override public void run(ApplicationArguments args) throws Exception { System.out.println("====================================="); System.out.println(name); System.out.println("====================================="); } }
properties random값
properties place holder
@TestPropertySource
우선순위가 2순위
프로퍼티 우선순위
우선순위가 제일 높은 방법으로 정의한 프로퍼티 값이 오버라이딩 된다.
- 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
- 테스트에 있는 @TestPropertySource
- @SpringBootTest 애노테이션의 properties 애트리뷰트
- 커맨드 라인 아규먼트
- SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
- ServletConfig 파라미터
- ServletContext 파라미터
- java:comp/env JNDI 애트리뷰트
- System.getProperties() 자바 시스템 프로퍼티
- OS 환경 변수
- RandomValuePropertySource
- JAR 밖에 있는 특정 프로파일용 application properties
- JAR 안에 있는 특정 프로파일용 application properties
- JAR 밖에 있는 application properties
- JAR 안에 있는 application properties
- @PropertySource
- 기본 프로퍼티 (SpringApplication.setDefaultProperties)
Junit Test
모든 프로퍼티들은 기본적으로 Envioronment를 통해서 확인이 가능하다. 그렇기 때문에 Envioronment를 주입받아 getProperty로 propertes 값을 가져올 수 있다.
@RunWith(SpringRunner.class) @SpringBootTest class SpringBootStudyApplicationTests { @Autowired Environment environment; @Test void contextLoads() { assertThat(environment.getProperty("jinseok.name")).isEqualTo("jinseok"); } }
테스트코드를 실항하면, 먼저 테스트코드를 읽고, 빌드를 할때 src를 전부 읽어서 claasspath에 놓는다. 그 다음에 테스트 코드를 읽어 classpath를 오버라이딩한다.
그렇기 때문에 main안에 있는 application.properties와 test안에 있는 application.properties가 동일한 key가 없다면 오류가 발생이 된다.
application.properties의 우선순위
application.properties를 같은 위치가 아니라 다른 위치에 둘 경우는 컴파일해도 덮어쓰지 않게된다.
- file:./config/ :프로젝트 디렉토리 바로 아래에 config라는 디렉토리를 만들고 그 안에 application.properties 만들어주는 방법
- file:./ :프로젝트 루트 바로 아래에 application.properties 만들어주는 방법
- classpath:/config/ :classpath 아래에 config라는 디렉토리를 만들고 그 안에 application.properties 만들어주는 방법
- classpath:/ :classpath 아래에 application.properties 만들어주는 방법
반응형'백기선(인프런 강의) > 스프링 부트 개념과 활용' 카테고리의 다른 글
프로파일 (0) 2020.04.14 외부 설정 2부 (0) 2020.04.13 SpringApplication (0) 2020.04.10 독립적으로 실행 가능한 JAR (0) 2020.04.09 내장 웹서버 응용 - 컨테이너와 포트 (0) 2020.04.08