[대충 정리] sw아카데미 Spring 4일차
1. Environment Profile
Application Property
- 다양한 정보(DB 접속 정보,서버포트 등)를 application property로 정의하고 사용한다.
- application property을 코드에 직접 작성 시 배포해야 할 때 매번 변경하거나 pw등은 코드 상에 노출이 되면 안되기 때문에 외부 속성으로 관리한다.
- property 파일 작성, jvm system property , os 환경변수 설정 후 애플리케이션이 로드
Property 파일 작성 및 활용
- 스프링 부트 이니셜라이저로 application.properites가 자동 생성된다. 즉, 스프링이 제공해주는 프로퍼티이다.
- [key = value] 형식으로 작성한다.
타입 지정 시, Integer -> String 같이 타입 미스를 유발하는 클래스는 불가능하고, 제네릭을 요구하는 클래스의 경우 제네릭에 대하여 타입 인자의 개수가 불일치 하거나 인터페이스(Queue)라면 불가능하다.
해당 방식으로 작성할 경우 런타임에서 바꾸지 못한다. (setter도 없다)
afterPropertiesSet()은 언제 실행
2. YAML
- XML과 JSON이 데이터 직렬화에 주로 쓰이기 시작하면서 많은 사람들이 YAML을 '가벼운 마크업 언어'로 사용되고 있다.
- spring boot부터 지원한다. 일반 spring 지원 x
3. Profile
- spring에서는 설정이나 Bean을 그룹화 하여 하나의 프로파일로 정의, 원하는 프로파일 지정하여 애플리케이션 구동
이전에는 @Qualifier로 같은 인터페이스를 구분하였지만, Profile 기능을 통해 applicationContext에서 environment를 가져 온다음, setActiveProfiles로 해당하는 profile 어노테이션이 붙은 객체만 활성화 하여 해당 부분만 사용할 수 있다.
refresh는 XML 파일, 프로퍼티 파일 관계형 DB 등의 설정을 갱신 또는 불러오는 함수이다.
4. Resource
- Resource 인터페이스는 Resource에 대한 접근을 추상화하기 위한 인터페이스이다.
- 외부의 파일들을 읽어들이거나, URL을 통해 가져와서 프로그래밍에 활용하기 위함이다.
스프링에서 제공하는 구현체는 다음과 같다.
- UrlResource
- ClassPathResource
- FileSystemResource
- PathResource
- ServletContextResource
- InputStreamResource
- ByteArrayResource
용도는 리소스의 종류에 따라 나뉜다.