原!上線遇到的問題, java序列化關鍵字transient 修飾的屬性變成null了

1.問題描述:數據庫

某個功能點,user對象 放入session,後再另外地方取出,結果某個字段沒有了。再本地和測試環境都是ok的,可是線上環境就是不行。緩存

後來看到這個user對象的那個屬性是加了transient改關鍵字的做用是控制變量的序列化,在變量聲明前加上該關鍵字,能夠阻止該變量被序列化到文件中,在被反序列化後,transient 變量的值被設爲初始值,如 int 型的是 0,對象型的是 null。tomcat

 

序列化的意義
Java中對象的序列化指的是將對象轉換成以字節序列的形式來表示,這些字節序列包含了對象的數據和信息,一個序列化後的對象能夠被寫到數據庫或文件中,也可用於網絡傳輸,通常當咱們使用緩存cache(內存空間不夠有可能會本地存儲到硬盤)或遠程調用rpc(網絡傳輸)的時候,常常須要讓咱們的實體類實現Serializable接口,目的就是爲了讓其可序列化。

網絡

 

問題出現的緣由:改對象的這個屬性加了transient,所以線上環境tomcat集羣 session作共享,是不會被序列化進去的傳輸的,所以會出現這個問題。session

相關文章
相關標籤/搜索