1. 程式人生 > >SpringBoot學習隨記(二)

SpringBoot學習隨記(二)

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的原始碼書,希望能堅持下來。