我在src/main/resources
中具有春季上下文<bean id="dataSource"
class="org.postgresql.ds.PGSimpleDataSource">
<property name="serverName" value="localhost"/>
<property name="databaseName" value="bookcompany"/>
<property name="user" value="thisadmin"/>
<property name="password" value="thisadmin"/>
</bean>
我想从java swing gui
更新每个属性值的"值"屏幕屏幕:java swing GUI选择数据库属性
这是我的Java GUI代码:
private void connectButtonActionPerformed(java.awt.event.ActionEvent evt) {
String serverNew = serverName.getText();
String databaseNew = databaseName.getText();
String dbUsernameNew = databaseName.getText();
String dbPasswordNew = databasePassword.getText();
//???
}
是否可以使用Java GUI的数据来更新我的Spring-Context的属性值?请帮助..
如果您使用@Bean
创建对象并使用@ComponentScan
,则可以更改这些值,但是我不确定您是否可以动态更改数据库连接参数。
例如,如果您想要数据库连接,则可以通过扩展PersistenceUnitInfo
来创建所需的BEAN或自己对象。
我找到了一个解决方案,我使用属性文件来存储属性值。然后我的春季上下文文件使用该属性文件。
首先,我将春季上下文文件更新为:
<context:property-placeholder location="file:./jdbc.properties" />
<bean id="dataSource"
class="org.postgresql.ds.PGSimpleDataSource">
<property name="serverName" value="${db.server}"/>
<property name="databaseName" value="${db.database}"/>
<property name="user" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
我更新我的Java代码:
String serverNew = serverName.getText();
String databaseNew = databaseName.getText();
String dbUsernameNew = databaseName.getText();
String dbPasswordNew = databasePassword.getText();
Properties props = new Properties();
File f = new File("./jdbc.properties");
if (f.exists()) {
props.load(new FileReader(f));
props.setProperty("db.host", serverNew);
props.setProperty("db.database", databaseNew);
props.setProperty("db.username", dbUsernameNew);
props.setProperty("db.password", dbPasswordNew);
f.createNewFile();
}
out = new FileOutputStream(f);
props.store(out, null);