SpringBoot學習隨記(二)
阿新 • • 發佈:2018-11-05
SpringBoot是一個很優秀的輕量化開發框架,它把開發者從重複繁雜的配置中拯救出來,讓人們專注於應用層的開發,和邏輯程式碼的編寫。最為一個初學者,我試著寫了一個專案,因為之前有寫過ssm的經驗,很快框架就搭好了。
如圖:
專案是學長公司的一個結構化伺服器,功能暫時不提,分包就是springboot的常用分包。config包中是所有springboot在執行時需要載入的bean目錄,controll是控制層程式碼,entity是資料庫的對映類。屬性ssm這些都應該懂,但是springboot中有些特殊的配置方式,我要記下來,便於以後翻看。
關於bean的載入,spring中bean的載入是通過xml配置完成的,原理就是spring通過xmlbeanfactory去解析xml中的bean節點,完成物件的建立,放入物件池中(說起來很簡單,過程特別複雜),但是在springboot中一切都通過註解去完成
如圖:
用過安卓dagger2框架的是不是很熟悉,在dagger中專案依賴也是通過這個方式用註解建立全域性可以使用的物件,springboot中bean物件也是在執行時建立,生命週期同application相同,全域性都可以使用這個物件,使用方法
@Component public class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if(SpringUtil.applicationContext == null) { SpringUtil.applicationContext = applicationContext; } } //獲取applicationContext public static ApplicationContext getApplicationContext() { return applicationContext; } //通過name獲取 Bean. public static Object getBean(String name){ return getApplicationContext().getBean(name); } //通過class獲取Bean. public static <T> T getBean(Class<T> clazz){ return getApplicationContext().getBean(clazz); } //通過name,以及Clazz返回指定的Bean public static <T> T getBean(String name,Class<T> clazz){ return getApplicationContext().getBean(name, clazz); } }
@Compant註解去宣告一個元件,元件在專案執行時執行,初始化方法,在其他需要用到bean的地方呼叫。
private HttpUtils(){
apiService = (ApiService) SpringUtil.getBean("ApiService");
}
總結一下:在springboot中config的作用就是去宣告bean物件,bean物件在專案執行時被預載入,並建立物件,想要獲取被例項化的bean需要用Application的例項去獲取,大致就是這樣。明天去看看原理。最近也在看spring的原始碼書,希望能堅持下來。