spring的applicationContext.xml中使用属性文件*.properties

我们可以生成如下的属性文件(/WEB-INF/jdbc.properties):

jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost/test
jdbc.user=postgres
jdbc.password=

  我们的Bean配置如下:

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
       <value>/WEB-INF/jdbc.properties</value>
    </property>
</bean>

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
         <value>${jdbc.driver}</value>
    </property>
    <property name="url">
         <value>${jdbc.url}</value>
    </property>
    <property name="username">
         <value>${jdbc.user}</value>
    </property>
    <property name="password">
         <value>${jdbc.password}</value>
    </property>
</bean>

  如上所述,我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value)。

  利用这种技术,我们可以从applicationContext.xml中移除所有特定于主机的配置属性。通过这种方式,我们可以自由地为该文件添加新的Bean,而不必担心特定于主机属性的同步性。这样可以简化生产部署和维护。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot + Atomikos环境下,我们可以使用Jasypt库来实现数据库信息的加密和解密。以下是一个示例: 1. 首先,在pom.xml文件添加以下依赖: ```xml <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.2</version> </dependency> ``` 2. 在application.properties或application.yml文件,我们需要设置以下属性: ```properties jasypt.encryptor.password=yourSecretPassword ``` 这里的“yourSecretPassword”是一个自定义的密码,用于加密和解密数据。 3. 在applicationContext.xml文件,我们可以使用Jasypt提供的加密和解密Bean来加密和解密数据库信息。以下是一个示例: ```xml <bean id="propertyConfigurer" class="com.ulisesbocchio.jasyptspringboot.properties.JasyptEncryptablePropertyPlaceholderConfigurer"> <constructor-arg ref="encryptor" /> <property name="locations"> <list> <value>classpath:application.properties</value> </list> </property> </bean> <bean id="encryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="password"> <value>${jasypt.encryptor.password}</value> </property> </bean> <bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close"> <property name="uniqueResourceName"> <value>dataSource</value> </property> <property name="xaDataSourceClassName"> <value>com.mysql.cj.jdbc.MysqlXADataSource</value> </property> <property name="xaProperties"> <props> <prop key="URL">${encryptor.decrypt('encrypted.database.url')}</prop> <prop key="user">${encryptor.decrypt('encrypted.database.username')}</prop> <prop key="password">${encryptor.decrypt('encrypted.database.password')}</prop> </props> </property> <property name="poolSize" value="5" /> </bean> ``` 在这个示例,我们使用了JasyptEncryptablePropertyPlaceholderConfigurer作为属性配置器,并将其构造函数的参数设置为encryptor Bean。我们还使用了StandardPBEStringEncryptor来创建encryptor Bean,并将其密码设置为前面在application.properties文件设置的密码。 在dataSource Bean,我们使用了encryptor.decrypt()方法来解密数据库URL、用户名和密码。这样,我们就可以安全地存储数据库信息,而不必担心它们被第三方获取到。 需要注意的是,加密和解密的过程是在Spring应用程序的启动过程完成的。因此,如果我们在应用程序运行时更改了加密密码,那么我们需要重新启动应用程序才能使新密码生效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值