【IOC】元件註冊(二)
阿新 • • 發佈:2019-09-23
當弄清楚有哪些方式可以往Spring容器中註冊元件之後,我們再來看一下和元件註冊相關的其他註解:
@Scope
@Lazy
@Conditional
,其中@Conditional
超級超級重要,SpringBoot中使用了大量的@Conditional
。
@Scope @Lazy
//預設是單例項的 /** * ConfigurableBeanFactory#SCOPE_PROTOTYPE * @see ConfigurableBeanFactory#SCOPE_SINGLETON * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST request * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION sesssion * @return * @Scope:調整作用域 * prototype:多例項的:ioc容器啟動並不會去呼叫方法建立物件放在容器中。每次獲取的時候才會呼叫方法建立物件; * singleton:單例項的(預設值):ioc容器啟動會呼叫方法建立物件放到ioc容器中。以後每次獲取就是直接從容器(map.get())中拿, * request:同一次請求建立一個例項 * session:同一個session建立一個例項 * * 懶載入: * 單例項bean:預設在容器啟動的時候建立物件; * 懶載入:容器啟動不建立物件。第一次使用(獲取)Bean建立物件,並初始化; */ @Scope("prototype") @Lazy @Bean("person") public Person person(){ System.out.println("給容器中新增Person...."); return new Person("張三", 25); }