Environment profile
ApplicationContex이 제공하는 기능.
- 여기서 말하는 Environment 어플리케이션이 처한 상황을 말하는 것이다.
ex) 테스트 환경, 개발 환경, 운영 환경
- 스프링 환경은 Profile과 Properties로 제공됨.
프로파일에 따라 환경이 바뀌고, 그 환경에 따라 프로퍼티가 바뀜.
즉, 환경에 따라 프로파일과 프로퍼티 소스가 다르게 설정된 Enviroment Object가 사용됨.
- 다양한 정보를 어플리케이션 속성(프로퍼티)로 정의하고 설정.
코드에 직접 작성하면 배포할 때마다 매번 변경해야되거나, 보안정보 같이 코드상에 노출되면 안 되는 정보들이 있기 때문에 외부 속성으로 관리하고 어플리케이션이 읽어오게 함.
- 속성은 많은 곳에 정의될 수 있음. 프로퍼티 파일, JVM 프로퍼티로, OS의 환경변수로 등등.
프로그램 상에서 속성을 프로퍼티 객체를 정의해서 사용도 가능.
- 스프링 인바이먼트 객체의 역할은 속성을 정의하게 해주고 앞에서 말한 다양한 속성을 소스로부터, 원천으로부터 가져올 수 있게 인터페이스를 제공.
value annotation
- 프로퍼티 키에 대한 값을 필드에 주입하는 방법.
참고
YAML
- YAML이라는 이름은 "YAML은 마크업 언어가 아니다 (YAML Ain'tMarkup Language)” 라는 재귀적인 이름에서 유래되었다. 원래 YAML의뜻은 “또 다른 마크업 언어 (Yet Another Markup Language)”였으나,YAML의 핵심은 문서 마크업이 아닌 데이터 중심에 있다는 것을 보여주기 위해 이름을 바꾸었다. 오늘날 XML과 JSON이 데이터 직렬화에 주로 쓰이기 시작하면서, 많은 사람들이 YAML을 '가벼운 마크업 언어'로 사용하려 하고 있다.
출처
- YAML 문법
Profile
- 특정한 특징, 공통점을 찾아 그룹화한 것.
속성을 찾고, 묶어서 그룹화한다.
- 설정, Bean 같은 것을 그룹화해서 하나의 프로파일로 정의하고 정의된 프로파일 중 원하는 프로파일로 어플을 구동할 수 있다.
개발환경, 운영환경, 로컬환경, 스테이지 환경 등 여러 개의 환경별로 프로파일을 만들고, 각 환경에서 동작하기 위해 필요한 환경설정 변수를 그룹화해 놓을 수 있다.
- 어플리케이션을 구동할 때 프로파일 지정을 해서 설정 들을 동작하게 할 수 있다.
Resource
- 스프링 애플리케이션을 만들다 보면 외부 리스소를 읽을 필요가 있는데, 이때 스프링은 Resource 와 ResourceLoader 인터페이스를 제공함으로써 하나의 API 로 제공합니다.
- 외부 리소스 : 이미지파일, 텍스트파일, 암복호화를 위한 키파일 등.