1. 程式人生 > >java.sql.SQLException:${jdbcDriver}異常處理方法

java.sql.SQLException:${jdbcDriver}異常處理方法

       問題描述:使用SSM和Servlet3.0+版本註解方式整合一個專案,當為Web專案加入Shiro框架對使用者登入以及許可權進行管理時,出現了資料庫的連線異常java.sql.SQLException:${jdbcDriver}。

       採用spring整合多方資源時,為後期維護修改便利,往往採用配置檔案的方式給固定屬性賦值,例如資料庫的連線會使用properties檔案注入的方式,前期採用的引入配置檔案的方式是:@PropertySource("classpath:configs.properties")。配置檔案configs.properties的內容如下:

jdbcDriver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/users
jdbcUser=root
jdbcPassword=root

       經過檢查,配置檔案中的內容並未變化,那麼是什麼導致了加入Shiro之後資料庫的連線異常?這裡提供一種可能的原因。@PropertySource("classpath:configs.properties")這種檔案的注入方式Spring只會載入一次properties檔案。當引入Shiro並對其進行配置之後,由於Shiro的底層含有properties檔案,Spring可能先構建Properties物件載入了這個檔案,而一旦是Spring識別到內部含有Properties物件,就不會再載入其餘的properties檔案.所以jdbc的相關配置並未被載入,進而導致資料庫連線異常。

       解決方式是用Spring整合PropertySourcesPlaceholderConfigurer物件,啟用此物件可以載入多個properties檔案。

@Bean
public PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer(){
	return new PropertySourcesPlaceholderConfigurer();
}