JAVA程式設計師操蛋的一天:為了兩個小bug整整耗費了兩個小時
阿新 • • 發佈:2020-12-18
技術標籤:JAVA-後端javaspring bootmysqlbug
- 今天在做一個需求,本來這個需求我是胸有成竹,很好實現的,但是,似乎事情總是不能遂人願,媽的在寫程式碼過程中遇到了兩個很操蛋的問題,讓我在儲存資料的時候遇到了無法解決的問題。
- 第一個問題
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class] :
BeanPostProcessor before instantiation of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration':
Initialization of bean failed; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named
'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry'
available
原因竟然是資料庫欄位和表註解@Table對應的表名不一致,這個上一個部落格已經說了
- 第二個問題
儲存資料的時候沒有報錯,但是資料庫就是不顯示,但是查的時候卻能查到。
這個問題之前我是遇到過的,當時的原因是加上@Transactional 後中間報錯,當時也是查不到資料,但是它沒報錯,一直排查不出來。解決方案是重新寫程式碼。現在這個問題是因為我查的時候用的dao層服務不是我儲存的那個dao,兩個表的資料是相等的,連欄位都是一致的。然後換成一致的,問題就迎刃而解了。
- 這兩個問題不能說明什麼,但也說明了什麼,我們在進行程式碼重構或者複製過程中,有大概率會出現你平時忽略的問題,有時候一個小數點,一個“-”,一個大寫或小寫都有可能導致整個系統無法啟動,這些問題可謂是災難性的。
- 如何解決這些所謂的小問題呢,個人看來,資料的有效性校驗是一個辦法,我們在平時寫程式碼過程中,要把要寫的自定義程式碼一些關鍵資訊抽取出來統一管理,在介面進行管理也是可以的,我們通過設定來進行資料的管理,這樣比手動寫要安全的多。除此之外,建議不要為了省事去複製一些所謂的程式碼,這是一個非常嚴重的事情,平時也不要複製程式碼,最好是手寫,這樣既能鍛鍊思維又能避免一些意想不到的報錯,可謂是十分值得。