如何从Java GUI数据中更新Spring属性值



我在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);

最新更新