ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 외부 설정 1부
    백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 4. 13. 08:27
    반응형

    외부 설정

    application.properties

    key - value 형태로 properties에 작성

    application.properties에 key value로 작성

     

    @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순위

     

     

    프로퍼티 우선순위

    우선순위가 제일 높은 방법으로 정의한 프로퍼티 값오버라이딩 된다.

     

    1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
    2. 테스트에 있는 @TestPropertySource
    3. @SpringBootTest 애노테이션의 properties 애트리뷰트
    4. 커맨드 라인 아규먼트
    5. SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
    6. ServletConfig 파라미터
    7. ServletContext 파라미터
    8. java:comp/env JNDI 애트리뷰트
    9. System.getProperties() 자바 시스템 프로퍼티
    10. OS 환경 변수
    11. RandomValuePropertySource
    12. JAR 밖에 있는 특정 프로파일용 application properties
    13. JAR 안에 있는 특정 프로파일용 application properties
    14. JAR 밖에 있는 application properties
    15. JAR 안에 있는 application properties
    16. @PropertySource
    17. 기본 프로퍼티 (SpringApplication.setDefaultProperties)

     

     

    Junit Test

    모든 프로퍼티들은 기본적으로 Envioronment를 통해서 확인이 가능하다. 그렇기 때문에 Envioronment를 주입받아 getPropertypropertes 값을 가져올 수 있다.

    @RunWith(SpringRunner.class)
    @SpringBootTest
    class SpringBootStudyApplicationTests {
    
    	@Autowired
    	Environment environment;
    	
    	@Test
    	void contextLoads() {
    		assertThat(environment.getProperty("jinseok.name")).isEqualTo("jinseok");
    	}
    }

     

    Test 구조
    결과

     

    테스트코드를 실항하면, 먼저 테스트코드를 읽고, 빌드를 할때 src를 전부 읽어서 claasspath에 놓는다. 그 다음에 테스트 코드를 읽어 classpath오버라이딩한다. 

     

    그렇기 때문에 main안에 있는 application.properties와 test안에 있는 application.properties가 동일한 key가 없다면 오류가 발생이 된다.

     

     

     

    application.properties의 우선순위

    application.properties를 같은 위치가 아니라 다른 위치에 둘 경우는 컴파일해도 덮어쓰지 않게된다.

    1. file:./config/ :프로젝트 디렉토리 바로 아래에 config라는 디렉토리를 만들고 그 안에 application.properties 만들어주는 방법
    2. file:./ :프로젝트 루트 바로 아래에 application.properties 만들어주는 방법
    3. classpath:/config/ :classpath 아래에 config라는 디렉토리를 만들고 그 안에 application.properties 만들어주는 방법
    4. 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
Designed by Tistory.