-
Environment - 프로파일SPRING/스프링프레임워크 핵심개념 2021. 5. 14. 00:02
Environment : Application 환경을 나타내는 Interface로 Profile과 Property가 있다.
프로파일
profile은 Bean들의 그룹이라고 할 수있다.
각기 다른 환경에 따라 다른 Bean들을 사용해야 하는 경우에 프로파일을 사용하면 유용하다.
ex : Test 환경, 배포 환경에 따라 다른 빈들을 사용해야 하는 경우
@Component public class AppRunner implements ApplicationRunner { @Autowired ApplicationContext ctx; @Autowired BookRepository bookRepository; @Override public void run(ApplicationArguments args) throws Exception { Environment environment = ctx.getEnvironment(); System.out.println(Arrays.toString(environment.getActiveProfiles())); System.out.println(Arrays.toString(environment.getDefaultProfiles())); } } public interface BookRepository { } public class TestBookRepository implements BookRepository{ }
위와 같이 Bean등록을 하지 않을 상태에서 스프링어플리케이션을 실행하면 에러가 발생한다.
-> Consider defining a bean of type 'com.beanscope.demo.BookRepository' in your configuration.
@Configuration @Profile("test") public class TestConfiguration { @Bean public BookRepository bookRepository() { return new TestBookRepository(); } }
test프로파일 환경에서만 동작하는 환경설정 파일을 생성하고, active Profile을 등록하면 에러가 빈이 주입된다.
Bean설정파일을 별도로 생성하여 등록하는 것외에 아래와 같이 Profile을 설정할 수 있다.
@Repository @Profile("test") public class TestBookRepository implements BookRepository{ }
프로파일 활성화 방법
1. Edit configuration -> Active profiles -> Profile명 입력
2. Edit configuration -> VM options -> -Dspring.profile.active="test" 입력
'SPRING > 스프링프레임워크 핵심개념' 카테고리의 다른 글
MessageSource - 다국어 (0) 2021.05.16 Environment - 프로퍼티 (0) 2021.05.14 Bean의 스코프 (0) 2021.05.13 @Component와 컴포넌트 스캔 (1) 2021.05.09 @Autowired를 이용한 의존성 주입 (0) 2021.05.09