Ich möchte einen "First Access Database Setup Process" in meiner Spring-Anwendung machen und das Einzige, was ich mir vorstellen kann, wäre, die DataSource-Bean programmatisch zu initialisieren.DataSource-Bean auf Code definieren
Meine aktuelle Bean ist wie folgt definiert:
<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>
aber die ideale Sache war es in von mir zu laden, wenn ich es brauche und mit dem Parameter I definieren.
Das Szenario ist, dass der Benutzer (Administrator) zum ersten Mal zur Anwendung kommt und ich ihn bitten, den Server, Port und Katalog zu verbinden. Ich speichere es in einer versenkten Datenbank und beim nächsten Start der Anwendung kann ein Bean überprüfen, ob der Parameter in der eingebetteten Datenbank gesetzt ist, und es erneut laden.
Ist es möglich?
EDT: pro @axtavt sugestion Ich bin goin mit einem Proxy ...
<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"/>
einmal mit einem Proxy implementiert, wie kann ich es auf die ursprüngliche Bean werfen?
Object o = ctx.getBean("dataSource");
BasicDataSource ds = (BasicDataSource)o;
wird werfen einen java.lang.ClassCastException: $ Proxy4 nicht org.apache.commons.dbcp.BasicDataSource gegossen werden kann
http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html könnte, aber ich # M nicht sicher helfen, ob es Strom ist – stacker
gefunden: es handelt sich mehr um eine austauschbare Datenquelle mit einem Proxy. http://affy.blogspot.com/2007/11/dynamic-datasource-via-spring-using.html –