본문 바로가기
개발/spring, spring boot

[spring] Environment - 프로필(profile)

by 가시죠 2021. 1. 17.
반응형

XML설정에서 프로필 사용

<beans> 태그에 profile 속성을 사용

<!-- dataSource-dev.xml 파일-->
<beans ...
  profile="dev">
  
  <bean id="connProvider" class="com.tistory.kisspa.JdbcConnProvider" init-method="init">
    <property name="driver" value="${jdbc.driver}">
    <property name="url" value="${jdbc.url}">
    <property name="user" value="${jdbc.user}">
    <property name="password" value="${jdbc.password}">
  </bean>
</beans>
  
<!-- dataSource-prod.xml 파일 -->  
<beans ...
  profile="prod">
  
  <bean id="connProvider" class="com.tistory.kisspa.JndiConnProvider">
    <property name="jndiName" value="java:/comp/env/jdbc/db" />
  </bean>
  
</beans>  
 

<!-- Environment.setActiveProfiles 를 사용하여 프로필 선택 -->

GenericXmlApplicationContext context = new GenericXmlApplicationContext();
context.getEnvironment().setActiveProfiles("dev");

// 2개이상일 경우 
context.getEnvironment().setActiveProfiles("dev", "mysql");

context.load("classpath:/dataSource-dev.xml",
  "classpath:/dataSource-prod.xml");
  
context.refresh();  


<!-- java 환경변수로 프로필 선택할 경우 -->
java -Dspring.profiles.active=prod,oracle

 

자바 @Configuration 설정에서 프로필 사용

//DataSourceProdConfig.java

import org.springframework.context.annotation.Profile;

@Configuration
@Profile("prod")
public class DataSourceProdConfig {

  @Bean
  public JndiConnectionProvider connProvider() {
    JndiConnectionProvider connProvider = new JndiConnectionProvider();
    connProvider.setJndiName("java:/comp/env/db");
    return connProvider;
  }
}

// setActiveProfiles를 이용하여 프로필 선택
AnnocationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.getEnvironment().setActiveProfiles("dev");
context.register(ApplicationConfig.class, DataSourceDevConfig.class, DataSourceProdConfig.class);
context.refresh()l
반응형

댓글