복붙노트

[SPRING] 하나의 DataSource로 Spring의 프로그래밍 방식으로 데이터베이스를 변경하는 방법

SPRING

하나의 DataSource로 Spring의 프로그래밍 방식으로 데이터베이스를 변경하는 방법

Spring에서 하나의 DataSources를 사용하는 가장 좋은 방법은 무엇인지보고 싶지만 Java 코드 내에서 데이터베이스를 전환 할 수 있습니까? 아래 두 개의 데이터 소스가 있으며 동일한 데이터베이스 서버이지만 다른 데이터베이스로 이동합니다.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
    <property name="url"
              value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE_EMS" />
    <property name="username" value="userid" />
    <property name="password" value="derp" />
</bean>

<bean id="dataSourceMain" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
    <property name="url"
              value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE" />
    <property name="username" value="userid" />
    <property name="password" value="derp" />
</bean>

나는 그들 자신의 각각의 bean에 묶여있다. 그러나 나는 나의 유산 코드를보고있다. 그리고 그것은 2 개의 분리 된 bean으로 이것을 구현하기 위해 매우 어색 할 것이다. 필요한 경우 하나의 DataSource를 사용하고 데이터베이스를 전환하는 방법에 대한 아이디어 나 생각이 있습니까?

해결법

  1. ==============================

    1.Spring의 AbstractRoutingDataSource를 확장하고 기존의 데이터 소스를 래핑하여이 작업을 수행 할 수 있습니다. 자세한 내용은이 기사를 참조하십시오. 기사에서 인용 :

    Spring의 AbstractRoutingDataSource를 확장하고 기존의 데이터 소스를 래핑하여이 작업을 수행 할 수 있습니다. 자세한 내용은이 기사를 참조하십시오. 기사에서 인용 :

    또한 SO에 관한 유사한 질문을보십시오 :

  2. ==============================

    2.당신이 이것을 할 수있는 많은 방법들이 있습니다. 예를 들어, 서비스 클래스 인 DatasourceSelectorService를 만들 수 있으며, 일부 입력 (예 : 구성 파일 / 사용자 입력)에 따라 데이터 소스의 빈을 적절히 선택합니다.

    당신이 이것을 할 수있는 많은 방법들이 있습니다. 예를 들어, 서비스 클래스 인 DatasourceSelectorService를 만들 수 있으며, 일부 입력 (예 : 구성 파일 / 사용자 입력)에 따라 데이터 소스의 빈을 적절히 선택합니다.

    데이터 소스가 필요한 다른 모든 클래스는이 DatasourceSelectorService를 통해 가져와야합니다.

  3. from https://stackoverflow.com/questions/14330668/how-to-programatically-change-databases-in-spring-with-one-datasource by cc-by-sa and MIT license