2014-06-07 2 views
0

우리는 독립형 Spring 애플리케이션과 Weblogic의 Webservice로 실행되는 애플리케이션을 보유하고 있습니다. 독립형 응용 프로그램은 등록 정보 파일을 읽음으로써 아래와 같이 데이터베이스 데이터 소스를 만듭니다.응용 프로그램 모드에 따라 Spring에서 DataSource를 동적으로 구성하는 방법은 무엇입니까?

그러나 Webservices 부분에서는 Weblogic에서 JNDI를 통해 구성된 DataSource를 사용하고 싶습니다. 내 응용 프로그램이 실행되는 모드를 기반으로 동적 DataSource 스위치를 만드는 방법을 잘 모르겠습니다. 어떤 도움을 주시겠습니까?

@Configuration 
@PropertySources(value = {@PropertySource("classpath:app.properties")}) 
public class DAOConfig { 
    @Autowired 
    Environment env; 

    @Bean(destroyMethod = "close") 
    public DataSource dataSource() { 
     return new DataSources.Builder() 
       .host(env.getProperty("dbhost")) 
       .port(env.getProperty("dbport", Integer.class)) 
       .service(env.getProperty("dbservice")) 
       .user(env.getProperty("dbuser")) 
       .pwd(env.getProperty("dbpwd")) 
       .initialConnectionsInPool(env.getProperty("dbinitialConnectionsInPool", Integer.class)) 
       .maxConnectionsInPool(env.getProperty("dbmaxConnectionsInPool", Integer.class)) 
       .build(); 
    } 
} 

답변

2

spring profiles 사용은 XML 구성하여 아래 예 :

<beans profile="production"> 
     <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"> 
      <constructor-arg ref="hikariConfig"/> 
     </bean> 
    </beans> 

    <beans profile="development"> 
     <jdbc:embedded-database id="dataSource" type="H2"> 
      <jdbc:script location="classpath:/sql/createSchema.sql"/> 
     </jdbc:embedded-database> 
    </beans> 

그럼 파라미터로서 추가하기 시작 프로그램 :

-Dspring.profiles.active="development"" 
관련 문제