1. 程式人生 > 其它 >JAVA程式設計師操蛋的一天:為了兩個小bug整整耗費了兩個小時

JAVA程式設計師操蛋的一天:為了兩個小bug整整耗費了兩個小時

技術標籤: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,兩個表的資料是相等的,連欄位都是一致的。然後換成一致的,問題就迎刃而解了。

  • 這兩個問題不能說明什麼,但也說明了什麼,我們在進行程式碼重構或者複製過程中,有大概率會出現你平時忽略的問題,有時候一個小數點,一個“-”,一個大寫或小寫都有可能導致整個系統無法啟動,這些問題可謂是災難性的。
  • 如何解決這些所謂的小問題呢,個人看來,資料的有效性校驗是一個辦法,我們在平時寫程式碼過程中,要把要寫的自定義程式碼一些關鍵資訊抽取出來統一管理,在介面進行管理也是可以的,我們通過設定來進行資料的管理,這樣比手動寫要安全的多。除此之外,建議不要為了省事去複製一些所謂的程式碼,這是一個非常嚴重的事情,平時也不要複製程式碼,最好是手寫,這樣既能鍛鍊思維又能避免一些意想不到的報錯,可謂是十分值得。