一.項目啓動過程分析:spring
SpringBoot項目在啓動時,首先基於啓動入口類上的註解描述,進行自動配置並掃描指定包以及子包中的類進行加載,而後檢測類上是否有Spring框架中指定的註解描述,有的話,則將類交給Spring框架中的BeanFactroy工廠接口的實現類對象,此工廠對象會基於反射建立Bean的實例,假如指定了生命週期方法,還會調用生命週期方法,當實例建立了之後,Spring框架還會基於類的做用域描述,將實例存儲到不一樣做用域的容器中.
二.Spring框架中的註解:框架
@SpringBootApplication註解描述的類爲項目的啓動入口 @Component是Spring中用於描述Bean類的一個註解。 @SpringBootTest 註解用於告訴spring框架,此測試類交給spring管理。 @Autowired註解描述屬性時,用於告訴spring框架要爲此屬性注入一個值. @Lazy註解用於描述類,其目的是告訴spring框架此類支持延遲加載,一般會配合單例做用域使用,
默認是true。測試
@Scope 是Spring中用於定義Bean對象做用域的一個註解,其經常使用的值有
singleton(整個內存有一份Bean實例,此實例什麼時候建立與類的延遲加載特性配置有關,此實例建立之後,生命週期會由spring框架管理),prototype(每次獲取都會建立新實例,此實例會在須要時建立與lazy特性無關,這個實例建立之後,不會交給spring管理,spring能夠對其初始化,但不負責銷燬。)等。prototype
@PostConstruct 註解用於描述bean對象生命週期方法中的初始化方法,此方法會在對象的構造方法以後執行(是對象建立之後的初始化)。 @PreDestroy 註解用於描述Bean對象生命週期方法中的銷燬方法,此方法會在對象銷燬以前執行(看成用域爲prototype時,此方法不會執行)。
三.Spring框架管理Bean對象的優點:code
Spring框架能夠爲由它管理的對象(Bean)提供懶加載策略(@Lazy),做用域(@Scope),生命週期方法(@PostConstruct,@PreDestroy),以實現對象對系統的有效使用,同時,Spring框架還能夠基於對象和對象之間的依賴關係,下降對象和對象之間的耦合性,提升程序的可維護性和可擴展性.