之前在項目裏面連接數據庫需要將密碼解密,而且連接好多數據庫,並且有的數據庫需要解密有的直接連接就可以。
這樣代碼的可讀性特別低,在連接數據庫的時候都要現連接:
Properties prop = new Properties();
prop.load(Thread.currentThread().getContextClassLoader()
.getResourceAsStream("lecture.properties"));
Session s = Session.getInstance(prop);
// OA數據庫連接地址
String oaIp = s.getProperty("oaIp");
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:" + "thin:@" + oaIp;
// OA用戶名
String user = s.getProperty("oaUsername");
// OA密碼
String password = s.getProperty("oaPassword");
PropertiesEncryptFactoryBean encryptor = new PropertiesEncryptFactoryBean();
那麼我們可以將數據庫的連接信息放到配置文件裏面,並且在配置文件解密,這樣在連接數據庫的時候只需在選擇加載那個連接:
(1)在spring的某一個xml配置文件中加入加載解密的配置屬性代碼:
這裏的classpath一定別寫錯了
<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="password" value="jesong" />
</bean>
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentVariablesConfiguration" />
</bean>
<bean id="propertyConfigurer"
class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor" />
<property name="ignoreResourceNotFound" value="false"/>
<property name="locations">
<list>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
(2)數據源配置
<!-- 數據源配置, 使用 BoneCP 數據庫連接池 -->
<bean id="OAdataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<!-- 數據源驅動類可不寫,Druid默認會自動根據URL識別DriverClass -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<!-- 基本屬性 url、user、password -->
<property name="url" value="${oaIp}" ></property>
<property name="username" value="${oaUsername}" />
<property name="password" value="${oaPassword}" />
</bean>
<bean id="gddataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<!-- 數據源驅動類可不寫,Druid默認會自動根據URL識別DriverClass -->
<property name="driverClassName" value="${jdbc.driver}" />
<!-- 基本屬性 url、user、password -->
<property name="url" value="${gdIp}" />
<property name="username" value="${gdUsername}" />
<property name="password" value="${gdPassword}" />
</bean>
(3)在相應的需要加載哪一個數據庫:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/spring/datasource.xml");
DriverManagerDataSource dataSource=(DriverManagerDataSource) applicationContext.getBean("OAdataSource");
System.out.println(dataSource.getUrl());
con=dataSource.getConnection();
System.out.println("OA數據庫連接成功!");
(4)另外在數據庫配置文件中config.properties文件中,如果哪一個需要解密,那麼需要加上前綴ENC(**********):
password=ENC(********)