1. 程式人生 > >Spring原始碼解讀之——元件註冊(隨筆)

Spring原始碼解讀之——元件註冊(隨筆)

@ComponentScan 

value:指定要掃描的包
excludeFilters = Filter[] :指定掃描的時候按照什麼規則排除那些元件
includeFilters = Filter[] :指定掃描的時候只需要包含哪些元件
FilterType.ANNOTATION:按照註解
FilterType.ASSIGNABLE_TYPE:按照給定的型別;
FilterType.ASPECTJ:使用ASPECTJ表示式
FilterType.REGEX:使用正則指定
FilterType.CUSTOM:使用自定義規則

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建立物件,並初始化;
    
     給容器中註冊元件;
1)、包掃描+元件標註註解(@Controller/@Service/@Repository/@Component)[自己寫的類]
2)、@Bean[匯入的第三方包裡面的元件]
3)、@Import[快速給容器中匯入一個元件]
        1)、@Import(要匯入到容器中的元件);容器中就會自動註冊這個元件,id預設是全類名
        2)、ImportSelector:返回需要匯入的元件的全類名陣列;
        3)、ImportBeanDefinitionRegistrar:手動註冊bean到容器中
4)、使用Spring提供的 FactoryBean(工廠Bean);
        1)、預設獲取到的是工廠bean呼叫getObject建立的物件
        2)、要獲取工廠Bean本身,我們需要給id前面加一個&
            &colorFactoryBean