스프링 프레임워크 핵심 기술
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/spring-core-tech/tree/chap02-06-1-environment_profile
https://github.com/freespringlecture/spring-core-tech/tree/chap02-06-2-environment_prperty
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/spring-framework_core/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
2-6-1. IoC 컨테이너 6부: Environment 1부. 프로파일
프로파일과 프로퍼티를 다루는 인터페이스
ApplicationContext extends EnvironmentCapable
getEnvironment()
profile
- 빈들의 묶음
- 환경 설정(dev, prod, staging, alpha, beta, gamma...)
- 각각의 환경에따라 다른 빈들을 사용해야되는 경우
- 특정 환경에서만 어떠한 빈을 등록해야되는 경우
- Environment의 역할은 활성화할 프로파일 확인 및 설정
프로파일 유즈케이스
- 테스트 환경에서는 A라는 빈을 사용하고 배포 환경에서는 B라는 빈을 쓰고 싶다
- 이 빈은 모니터링 용도니까 테스트할 때는 필요가 없고 배포할 때만 등록이 되면 좋겠다
프로파일 정의하기
- 클래스에 정의
- @Configuration @Profile(“test”)
- @Component @Profile(“test”)
- 메소드에 정의
- @Bean @Profile(“test”)
프로파일 설정하기
- -Dspring.profiles.avtive=”test,A,B,...”
- @ActiveProfiles (테스트용)
프로파일 표현식
-
! (not)
-
& (and)
-
|(or)
-
특정 환경(test)에서의 예시
-
Ultimate
intelliJ - Edit Configuration - Environment - Active profiles 에 test 입력
-
Community
intelliJ - Edit Configuration - Environment - VM option 에
-Dspring.profiles.active="test"
입력
-
-
Configuration 으로 프로파일 설정하는 방법
@Configuration @Profile("test") public class TestConfiguration { @Bean public BookRepository bookRepository() { return new TestBookRepository(); }
}
- Repository 에 직접 설정
> Configuration으로 프로파일을 설정하는 방법은 번거로우므로 아래와 같이 설정하면 간편함
```java
@Repository
@Profile("test")
public class TestBookRepository implements BookRepository {
}
-
!(not), &(and), |(or)
아래 코드는 prod가 아니면 빈으로 등록 시킴
-
@Repository @Profile("!prod & test") public class TestBookRepository implements BookRepository {
}
# 2-6-2, IoC 컨테이너 6부: Environment 2부. 프로퍼티
## property
- 다양한 방법으로 정의할 수 있는 설정값
- Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기
### 우선순위
> StandardServletEnvironment의 우선순위
- ServletConfig 매개변수
- ServletContext 매개변수
- JNDI (java:comp/env/)
- JVM 시스템 프로퍼티 (-Dkey="value")
- JVM 시스템 환경변수 (운영체제 환경변수)
- VM option에 주는 법
-Dapp.name=spring5
### properties 파일로 설정하는법
1. resources 에 app.properties 파일 생성
app.about=spring
2. @Configuration or @SpringBootApplication 설정 파일이 있는 곳에 설정
```java
@PorpertySource("classpath:/app.properties")
-
Property 값 가져오기
@Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext ctx; @Override public void run(ApplicationArguments args) throws Exception { Environment environment = ctx.getEnvironment(); System.out.println(environment.getProperty("app.name")); System.out.println(environment.getProperty("app.about")); } }
스프링 부트에서 Property 가져오기
@Value("${app.name}")
String appName;
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 프레임워크 핵심 기술] 2-8. IoC컨테이너-ApplicationEventPublisher (0) | 2019.10.06 |
---|---|
[스프링 프레임워크 핵심 기술] 2-7. IoC컨테이너-MessageSource (0) | 2019.10.06 |
[스프링 프레임워크 핵심 기술] 2-5. IoC컨테이너-bean scope (0) | 2019.10.06 |
[스프링 프레임워크 핵심 기술] 2-4. IoC컨테이너-Component와 컴포넌트 스캔 (0) | 2019.10.06 |
[스프링 프레임워크 핵심 기술] 2-3. IoC컨테이너-Autowired (0) | 2019.10.06 |
댓글