Chciałbym utworzyć "Pierwszy proces konfiguracji bazy danych" w mojej aplikacji wiosennej i jedyne, co mogę sobie wyobrazić jako rozwiązanie, to programowe inicjowanie komponentu DataSource bean.Definiowanie komponentu bean DataSource pod kodem
Mój obecny fasola jest zdefiniowany jako:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/catalog" />
<property name="username" value="condominium" />
<property name="password" value="password" />
<property name="validationQuery" value="SELECT 1" />
<property name="testOnBorrow" value="true" />
<property name="defaultAutoCommit" value="false" />
<property name="maxWait" value="5000" />
</bean>
ale idealną rzeczą było, aby załadować go w sobie, ilekroć jest to potrzebne i z parametrem I zdefiniowania.
Scenariusz jest taki, że użytkownik (administrator) przychodzi do aplikacji po raz pierwszy i pytam go o serwer, port i katalog, aby się połączyć. Przechowuję go w przylegającym db i przy następnym uruchomieniu aplikacji, komponent bean może sprawdzić, czy parametr jest ustawiony na osadzonym db i załadować go ponownie.
Czy to możliwe?
EDT: za @axtavt sugestion Idę z prokurentem ...
<bean id="dataSource" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="targetSource" ref="swappableDataSource"/>
</bean>
<bean name="swappableDataSource" class="org.springframework.aop.target.HotSwappableTargetSource">
<constructor-arg ref="dummyDataSource"/>
</bean>
<bean id="dummyDataSource" factory-bean="dataSourceFactory" factory-method="createDataSource" destroy-method="close"/>
<bean id="dataSourceFactory" class="com.condominium.spring.factory.DataSourceFactory"/>
raz z prokurentem wdrożone jak mogę rzucić go do oryginalnego Bean?
Object o = ctx.getBean("dataSource");
BasicDataSource ds = (BasicDataSource)o;
rzuci java.lang.ClassCastException: $ Proxy4 nie mogą być oddane do org.apache.commons.dbcp.BasicDataSource
http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html mógł pomóc, ale I # M nie jestem pewien czy jest to prąd – stacker
Znalazłem to: chodzi bardziej o wymienne źródło danych z wykorzystaniem proxy. http://affy.blogspot.com/2007/11/dynamic-datasource-via-spring-using.html –