Как программно изменить базы данных в Spring 3.x с одним источником данных?

Я хочу увидеть полный рабочий пример кода в весенней версии 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>

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

0
0
79
2

Ответы 2

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

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

или

@Autowired
private ApplicationContext ctx;

затем вы

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

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

Это веб-приложение, реализованное в Spring MVC 3.x.

Ajay Takur 19.01.2019 06:10

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

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

Другие вопросы по теме