Как программно изменить базы данных в Spring 3.x с одним DataSource? - PullRequest
0 голосов
/ 18 января 2019

Я жду, чтобы увидеть полный рабочий пример кода в весенней версии MVC 3.x, как лучше всего использовать один источник данных в Spring, но иметь возможность переключать базу данных из кода Java? Ниже приведены два моих источника данных, и они идут на один и тот же сервер базы данных, но на разные базы данных.

<bean id="ds_hydhccj" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"></property>
        <property name="url" value="jdbc:postgresql://localhost:5432/dbname"></property>
        <property name="username" value="postgres"></property>
        <property name="password" value="postgres"></property>
    </bean>

Как иметь возможность использовать один источник данных и динамически переключать базы данных, когда я выбираю опцию выпадающего меню из внешнего интерфейса, которая является именем dbname, которому я хочу передать его URL?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

AbstractRoutingDataSource должен быть твоим другом. Это позволяет настроить один отдельный компонент в Spring ApplicationContext с помощью механизма, чтобы переключить его на один из n реальных источников данных.

Вы можете найти простой пример в этом другом ТАК вопрос

0 голосов
/ 18 января 2019

Сначала вам нужно получить контекст приложения, в вашем случае вы можете сделать это двумя способами

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml")

или

@Autowired
private ApplicationContext ctx;

тогда вы

DataSource dataSource = (DataSource) context.getBean("ds_hydhccj");

Если вы используете фреймворк, например, например, hibernate, я рекомендую вам создать два отдельных менеджера сущностей, которые будут содержать два разных соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...