Spring 註解自動裝載和檢測

00潤物無聲00發表於2017-01-22

  自動裝配autowiring():有助於減少甚至消除配置<property>元素和<constructor-arg>元素,讓Spring自動識別如何裝配Bean的依賴關係;

  自動檢測autodiscovery():比自動裝配更進一步,讓Spring能夠自動識別哪些類需要被配置成Spring Bean,從而減少<bean>元素的使用;

  當自動裝配和自動檢測一起使用時,可以減少Spring的xml配置資料。



註解裝配

  Spring2.5開始,使用註解自動裝配Bean的屬性,預設Spring容器禁用註解裝配,我們需要在Spring的context名稱空間中配置<context:annotation-config>元素開啟註解裝配

  @Autowired標註set方法,普通方法,構造方法和屬性.

  使用autowired註解標註屬性,刪除setter方法;

	@Autowired(required=false)
	private Instrument instrument;

  required屬性為false表示配置自動裝配是可選的。當沒有找到Instrument的Bean時,屬性會設定為null;


<context:annotation-config>有助於完全消除Spring配置的<property>和<constructor-arg>元素,但是仍然需要<bean>元素顯示定義Bean


自動檢測

  <context:componet-scan>元素完成了<context:annotation-arg>的工作,並且允許Spring自動檢測和定義Bean;

不再使用<bean>元素,Spring應用中的Bean都能夠實現定義和裝載;

   	<context:component-scan base-package="com.dynamic.oa"></context:component-scan>

  該元素掃描指定包及其所有子包,並查詢出能夠自動註冊為Spring Bean的類;

  <context:component-scan>如何知道哪些類需要註冊為Spring Bean呢?下面的5中註解幫助自動檢測注入Bean

    @Component:通用的構造型註解,表示該類為Spring元件
    @Controller:標識將該類定義為Spring MVC Controller
    @Repository:標識將該類定義為資料倉儲
    @Service:標識將該類定義為服務

  Spring掃描該包時,會講使用了構造型註解的的類,自動註冊為Spring Bean,並設定預設ID為無限定類名,全小寫;


總結:

  使用註解和自動檢測的方式,減少了XML的配置量,註解裝載消除了Spring配置中的<property>和<constructor-arg>y元素。而自動檢測,通過構造型註解的配置,Spring在掃描配置的包時,自動定義和裝配Spring Bean




相關文章