Можно ли определить соединитель источника данных в контроллере Spring?
Я работаю над инструментом: синхронизирую исходную таблицу с целевой таблицей.
Я бы определил источник и цель в моем контроллере (для синхронизации разных баз данных - на мой взгляд, я могу выбрать разные исходные и целевые базы данных).
На самом деле, я определяю свой источник данных в вызове файла: datasource.xml
Мой код:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<bean id="sourceDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/source"/>
<!--<property name="url" value="jdbc:mysql://linkSource"/>-->
<property name="username" value="username"/>
<property name="password" value="password"/>
</bean>
<bean id="targetDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/target"/>
<!--<property name="url" value="jdbc:mysql://linkTarget"/>-->
<property name="username" value="username"/>
<property name="password" value="password"/>
</bean>
</beans>
Спасибо за вашу помощь!
Спасибо за вашу помощь!
Но я думаю, что поставил свой вопрос плохо.
На самом деле, у меня есть в моем sync-servelt.xml (только часть):
<!--sync query beans-->
<bean id="sourceDatasetQueryBean" class="ds.sync.db.SyncDatasetQuery" name="sourceDatasetsQuery">
<property name="dataSource" ref="sourceDataSource"/>
</bean>
<bean id="targetDatasetQueryBean" class="ds.sync.db.SyncDatasetQuery" name="targetDatasetsQuery">
<property name="dataSource" ref="targetDataSource"/>
</bean>
<bean id="sourceDatasetDescriptionQueryBean" class="ds.sync.db.SyncDatasetDescriptionQuery" name="sourceDatasetsDescriptionQuery">
<property name="dataSource" ref="sourceDataSource"/>
</bean>
<bean id="targetDatasetDescriptionQueryBean" class="ds.sync.db.SyncDatasetDescriptionQuery" name="targetDatasetsDescriptionQuery">
<property name="dataSource" ref="targetDataSource"/>
</bean>
...more...
И в моем контроллере я использую:
@Autowired
@Qualifier("sourceDatasetQueryBean")
protected SyncDatasetQuery m_datasetQuerySource;
@Autowired
@Qualifier("targetDatasetQueryBean")
protected SyncDatasetQuery m_datasetQueryTarget;
@Autowired
@Qualifier("sourceDatasetDescriptionQueryBean")
protected SyncDatasetDescriptionQuery m_datasetDescriptionQuerySource;
@Autowired
@Qualifier("targetDatasetDescriptionQueryBean")
protected SyncDatasetDescriptionQuery m_datasetDescriptionQueryTarget;
...more...
У меня есть 11 таблиц для синхронизации между источником и целью ...
Есть ли способ сгруппировать мои компоненты запроса?
Мои синхронизации должны выполняться в нескольких базах данных.
Например, у меня есть 3 сайта в разных местах, 1 сайт - ИСТОЧНИК (A), 2 сайта - TARGET (B & C); с формой (сделанной с помощью YUI) я смогу синхронизировать A-> B и A-> C.
Подведем итог:
1 - в своей форме я выбираю ИСТОЧНИК и ЦЕЛЬ (несколько баз данных),
2- моя форма отправляет (в Ajax) выбранный ИСТОЧНИК и выбранный ЦЕЛЬ на мой контроллер,
3 - мой контроллер указывает на хорошую базу данных.
Каков наилучший способ сделать это?
Используя Фабрику?
Использование setDataSource?
Спасибо за помощь.