대충 정리

[대충 정리] sw아카데미 Spring 4일차

0taek 2023. 1. 27. 18:30

1. Environment Profile

Application Property

- 다양한 정보(DB 접속 정보,서버포트 등)를 application property로 정의하고 사용한다.

- application property을 코드에 직접 작성 시 배포해야 할 때 매번 변경하거나 pw등은 코드 상에 노출이 되면 안되기 때문에 외부 속성으로 관리한다. 

- property 파일 작성, jvm system property , os 환경변수 설정 후 애플리케이션이 로드

 

 

 Property 파일 작성 및 활용

- 스프링 부트 이니셜라이저로 application.properites가 자동 생성된다. 즉, 스프링이 제공해주는 프로퍼티이다.

- [key = value] 형식으로 작성한다.

AppConfiguration에서 PropertySource 파일을 명시
properties 파일에 작성, key=version, value= v1.0.0(String)
활용예시, 우측에 클래스를 명시하여 타입을 지정할 수 있다.

타입 지정 시, Integer -> String 같이 타입 미스를 유발하는 클래스는 불가능하고,  제네릭을 요구하는 클래스의 경우 제네릭에 대하여 타입 인자의 개수가 불일치 하거나 인터페이스(Queue)라면 불가능하다.

 

1. 어노테이션을 통해 변수에 직접 value를 넣는다

 

2. ${}으로 key값에 대한 value값을 분석하여 변수에 넣는다.

 

 

3. 해당 key값을 가진 프로퍼티가 없다면 세미콜론(:) 뒤의 요소를 value로 넣는다.

 

4. JVM 환경변수를 가져올 수 있다. 프로퍼티 파일에서 같은 Key값으로 사용되고 있다면 프로퍼티 파일에서 우선도를 가진다.
JAVA_HOME

 

 

클래스 활용 예제
클래스 활용 예제

해당 방식으로 작성할 경우 런타임에서 바꾸지 못한다. (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을 통해 가져와서 프로그래밍에 활용하기 위함이다.

 

ResourceLoader에서 getResource를 통해 파일이름을 가져온다.

 

스프링에서 제공하는 구현체는 다음과 같다.

 

용도는 리소스의 종류에 따라 나뉜다.