spring bean單多例和生命周期
spring中,bean可以被定義為兩種模式,分別為singleton和prototype模式,默認是單例模式,即只有一個共享實例存在,每次請求這個bean都會返回這個唯一的實例。而多例模式每次請求bean都會返回一個新的bean實例,相當于每次請求都new一個實例。
配置單例多例的方法:在bean上面加注解@scope()注解可以配置單例和多例模式
bean生命周期
- spring只會幫我們管理單例模式bean完整的生命周期,而多例模式的bean spring創建好后把它交給使用者之后便不會再管理
- 對于Beanfactory容器,bean在第一次被調用的時候在被真正的創建,但是對于ApplicationContext容器,在第一次加載容器的時候就創建所有bean,等容器關閉的時候銷毀所有對象
java枚舉
枚舉除了不能繼承,基本上可以把枚舉當做一個類來看待
- 枚舉內可以添加任何方法,甚至是構造方法,但是聲明枚舉常量時不允許使用賦值運算符為枚舉常量賦值,但是可以通過方法來實現間接賦值
- 枚舉常量不需要任何修飾符
java默認訪問權限
不論是類,方法,還是變量,當不加任何權限修飾詞時,訪問權限都是包訪問權限
不推薦字段注入的原因
- 對象的外部可見性,無法在容器外部注入依賴
- 可能導致循環依賴問題,即a依賴b,b依賴a,結果在創建它們兩個時導致無法創建
- 無法設置注入的對象為final,也無法注入靜態變量
三種注入方式:字段注入,構造函數注入,setter函數注入
使用接口的原因
- 有利于代碼的規范,服務的規范
- 有利于后續代碼的運行維護修改
try catch finally
塊中不含return的情況
- try中沒有異常:則執行完try中的內容后執行finally里的內容
- try中含有異常,catch中無異常:捕獲try中的異常之后,跳轉到catch里面執行,執行完后執行finally里的內容
- try中含異常,catch中也含有異常:跳轉到catch之后,catch也出現異常,然后跳轉到finally里執行完后拋出異常
塊中含有return的情況
- finally中含有return時會覆蓋try-catch里面的return值,并且會覆蓋catch中拋出的異常信息
- 如果catch中有return語句,并不是函數直接返回,而是執行完finally里的內容后再返回
springboot配置文件中的on和off
在其配置文件中,on和off被默認讀出來是true和false,而帶單引號的on和off才會被讀成原始字符串,其他字符串均被讀出原始字符串
StringBuilder類
程序開發過程中,經常碰到字符串需要連接的情況,常用的方法是使用 + 號,但是這種方法每加一次就新創建了一個String對象,而且連接效率比較低,并且比較費空間,使用StringBuilder類,即可變長字符序列,可以避免這種問題的產生。
- append():字符串連接
- toString():返回一個與構建器或緩沖器內容相同的字符串
final用法
- 修飾基本數據類型:表示該數據是個常量,不能被修改
- 修飾對象的引用:表示該引用不可被重新賦值,即該引用一直指向該對象,但是對象仍然可以被修改
- 修飾類:表示該類不可被繼承
- 修飾方法:說明當前方法已經滿足要求,不允許繼承的類來重寫此方法進行擴展