Spring与数据库配置集成示例

在本文中,将探讨如何利用Jakarta Commons Configurations项目中的DatabaseConfiguration,将数据库中的属性加载到Spring应用程序上下文中。通过Spring模块,可以将从commons配置中加载的属性在应用程序上下文中使用。

开始之前

要按照本文的示例使用commons configuration与Spring集成,需要以下jar文件:spring.jar(Spring核心)、spring-modules.jar(Spring模块)和commons-configuration.jar(Commons配置)。此外,还需要一个可用的数据库。

以下是开始此示例所需的三个jar文件:

  • spring.jar -Spring核心
  • spring-modules.jar -Spring模块
  • commons-configuration.jar - Commons配置

在这个示例中,数据库有一个名为TEST_SCHEMA的模式和一个名为APPLICATION_PROPERTIES_TABLE的表,该表有两个列:KEY和VALUE。

KEY VALUE
key.one value one
file.location somewhere/on/the/filesystem
pet.dogs.name bart

*注意:这只是可用表结构的一个示例。

工作原理

DatabaseConfiguration是从注入的数据源初始化的,并配置为使用TEST_SCHEMA.APPLICATION_PROPERTIES表加载属性,使用KEY列作为键,VALUE列作为值。

CommonsConfigurationFactoryBean使用DatabaseConfiguration作为其配置(虽然可以有多个,但本示例中未使用)。

PropertyPlaceholderConfigurer使用属性属性设置为CommonsConfigurationFactoryBean。CommonsConfigurationFactoryBean是一个FactoryBean,它创建一个Properties对象。

PropertyPlaceholderConfigurer然后使属性在当前Spring配置文件中的任何bean通过${}符号可用。

PropertiesPrinter然后使用属性file.location、pet.dogs.name和file.location初始化。

    File Location : somewhere/on/the/filesystem
    Pet dogs name : bart
    Key one       : value one
    

Spring配置XML

<!-- 需要连接到数据源 --> <bean name="PropertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="properties" ref="CommonsConfigurationFactoryBean"/> </bean> <bean name="CommonsConfigurationFactoryBean" class="org.springmodules.commons.configuration.CommonsConfigurationFactoryBean"> <constructor-arg ref="DatabaseConfiguration"/> </bean> <bean name="DatabaseConfiguration" class="org.apache.commons.configuration.DatabaseConfiguration"> <constructor-arg type="javax.sql.DataSource" ref="someDataSource"/> <constructor-arg index="1" value="TEST_SCHEMA.APPLICATION_PROPERTIES_TABLE"/> <constructor-arg index="2" value="KEY"/> <constructor-arg index="3" value="VALUE"/> </bean> <!-- 包含以详细说明功能 --> <bean name="PropertiesPrinter" class="example.PropertiesPrinter" init-method="displayAllProperties"> <property name="fileLocation" value="${file.location}"/> <property name="petDogsName" value="${pet.dogs.name}"/> <property name="keyOne" value="${key.one}"/> </bean>

Java代码示例

package example; public class PropertiesPrinter { public String fileLocation; public String petDogsName; public String keyOne; public void setFileLocation(String fileLocation) { this.fileLocation = fileLocation; } public void setPetDogsName(String petDogsName) { this.petDogsName = petDogsName; } public void setKeyOne(String keyOne) { this.keyOne = keyOne; } public void displayAllProperties() { System.out.println("File Location : " + this.fileLocation); System.out.println("Pet dogs name : " + this.petDogsName); System.out.println("Key one : " + this.keyOne); } }

应用程序上下文初始化输出

    File Location : somewhere/on/the/filesystem
    Pet dogs name : bart
    Key one       : value one
    
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485