java.sql.SQLException:${jdbcDriver}異常處理方法
阿新 • • 發佈:2019-01-02
問題描述:使用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();
}