次日代碼: /** * FAQ? * 1)假如將此類交給spring管理,請問默認spring什麼時候建立此對象?你怎麼知道的? * 2)假如一個對象建立之後,存儲到內存,長時間不用會有什麼影響? * 3)你知道Spring中,Bean對象的延遲加載特性嗎?(瞭解) * 4)你知道什麼場景下這個對象適合延遲加載嗎?大對象,稀少用。 * 5)對象建立之後,應用結束要銷燬對象嗎? * 6)程序中的每一個對象都有生命週期(正確),不見得每一個對象都有生命週期方法。*/ @Scope("prototype") //每次從spring容器獲取對象都會建立一個新的實例 //@Scope("singleton")//默認就是單例做用域(這個類的實例在一個spring容器中默認只有一份) //@Lazy(false)//默認爲true //@Lazy(true)//此註解用於告訴spring框架,它描述的類的實例,假如暫時用不到,就不要先建立。 //@Lazy(value=true) @Component public class ObjectPool { /**構建對象時會執行對象的構造函數*/ public ObjectPool() { System.out.println("ObjectPool()"); } /**@PostConstruct 註解描述的方法會在對象構建之後執行,用於執行一些初始化操做*/ @PostConstruct public void init() { System.out.println("init()"); } /**@PreDestroy 註解描述的方法會在單例對象銷燬以前執行,spring容器在銷燬以前 * 會先將容器(Bean池)中的對象進行移除,在移除對象時,假如對象中定義了生命週期銷 * 毀方法,此時還會調用對象的生命週期銷燬方法(在這樣的方法中能夠作一些資源釋放操 * 做)。 * */ @PreDestroy public void close() { System.out.println("close()"); } }