1.1)類的位置(必須放在啟動類所在包以及子包)
1.2)類的描述(使用@Component注解)
2 )需要此對象的地方可從spring的bean池中獲取
思考:
1)如何判定一個對象在何時創建? (日志,斷點)
2)Spring容器中的Bean對象默認在啟動時創建,但長時間又不使用這個對象,
你覺得先把對象創建出來好嗎?(不好,占內存資源,由其是一些大對象)
3)Spring容器中的Bean對象假如不希望在容器啟動時進行創建,該如何設計呢?(延遲加載)
@Bean:描述的方法會將返回值放入bean池,描述的類直接回放到bean池
@Bean注解通常會應用在一些配置類(由@Configuration注解描述)中,用於描述
具備返回值的方法,然后系統底層會通過反射調用其方法,獲取對象基於作用域將對象
進行存儲或應用。I
@Bean應用場景:第三方資源的整合及配置
@Lazy(value=true or false)
:描述類,延遲加載,(不希望啟動時創建對象),value不寫時默認為true,
true
表示此對象要延遲構建及初始化,false
為實時加載(和沒有寫這個注解是一樣的效果)
@Component
:描述類
@Scope
:描述類時用於指定類實例的作用域,常用取值:
1)singleton
(默認為單例作用域-類的實例在- - 個JVM內存中其實例只有一份,通常配合Lazy使用,一般可重用對象使用).
2)prototype
(多 例作用域-此作用域對象為何時需要何時創建,spring框架不負責銷毀,不可重用或只使用一次的對象)
@PostConstruct
此注解描述的方法為生命周期初始化方法
在這樣的方法中一般會為創建好的對象再此進行一些初始化.
@PreDestroy
此注解描述的方法為生命周期銷毀方法,此方法會在對象銷毀之前執行.
在這樣的方法中可以實現一些,資源銷毀操作 ,destray()