1. 程式人生 > >spring bean管理的註解

spring bean管理的註解

Class path掃描與元件的管理

    @Component是一個通用的註解,可用於任何bean

    @Repository,@Service,@Controller是更有針對性的註解

       @Repository:通常用於註解DAO類,即持久層

       @Service:通常用於註解Service類,即服務層

        @Controller:通常用於Controller類,機控制層(MVC)

        元註解

            許多Spring提供的註解,可以作為自己的程式碼,即"元資料註解",元註解是一個簡單的註解,可以應用到另一個註解比如component,在使用元註解的時候除了value()外,元註解還可以允許有其他屬性可以定製

  • 類的自動檢測與註冊Bean

        Spring可以自動檢測所有類,並註冊相應的Bean到ApplicationContext(IOC容器)中,

        為了讓spring能夠檢測到這些類並註冊相應的Bean,需要下面的內容。

          

        紅線部分表示掃描定義的包下的所有類,並將其註冊到IOC容器中。

        如何使用過濾器進行自定義的掃描:

                1、預設情況下,   類被自動發現並註冊bean的條件是:使用@Component,@Repository,@Service,@Controller註解或者使用@Component的自定義註解。

                    2、可以通過過濾器修改上面的行為,如:下面的例子的XML配置忽略所有的@Repository註解並用”Stub“代替

                        

            3、還可以使用use-default-filters=”false   “禁用自動發現與註冊

  • <context:annotation-config/>

        基於XML的SPring配置的標籤 ,(包含上下文名稱空間)

          <context:annotation-config/>僅會查詢在同一個applicationContext中的Bean註解  

            定義bean:

                    1、掃描過程中元件被自動檢測,那麼bean名稱是用BeanNameGenerator生成的(通常是類的名字的首字母小寫)  ,@Component,@Repository,@Service,@Controller都會有個name屬性用於顯示的設定BeanName

                            例子:

                                    @Service("mySpringTest")這樣在bean中的id就會是自己定義的名字,如果不寫("mySpringTest")就會預設的類名的首字母小寫。

                       2、這個自動命名可以自動修改規則(可以改成類名全體大寫),實現的方法是BeanNameGenerator介面,並一定要包含的無參構造器,

                            覆蓋好方法後要使用它需要在XML中引用該覆蓋類。使用方法:

                                    <bean>

                                            <context:compontent-scan  base-package="org.test" name-generator="org.example.自定義的命名類名"/>

                                    </bean>


  • @Component,@Repository,@Service,@Controller

  • @Required
          
  • @Autowired

                  1、可以將Autowired註解為"傳統"的setter方法(可以註解到set方法上)

                   2、可用於構造器或者成員變數(可以註解到構造器或者成員變數上)

                    3、可以使用Autowired註解那些眾所周知的解析依賴性介面

                            比如:BeanFactory,ApplicationContext,Environment,ResourceLoader,ApplicationEventPublisher,andMessageSource

  • @Qualifier

            當按型別自動裝配時可能有多個Bean例項的情況下,可以使用Qualifier註解來縮小範圍(或者指定唯一),也可以用於指定單獨的構造器引數或者方法引數

                例子1:用於成員變數

                    

                指定bean的id為main的bean進行自動注入

                例子2:用於方法中

                    

            在xml中實現Qualifier

                

                定義自己的qualifier註解並使用:

                        

  • @Resourse