Spring中@Component註解,@Controller註解詳解(網摘)

  在使用Spring的過程當中,爲了不大量使用Bean注入的Xml配置文件,咱們會採用Spring提供的自動掃描注入的方式,java

只須要添加幾行自動注入的的配置,即可以完成Service層,Controller層等等的注入配置.spring

  使用過程當中,在Service層中的實現類頭上加@Compopnet註解,在Controller類頭加@Controller註解,便完成了配置。app

例如ui

  在Controller中當咱們調用某個Service時就不須要Set方法了,直接經過@Autowried 註解對Service對象進行註解便可:this

例如component

   在Controller中:對象

@Controller開發

@RequestMapping("/test")get

public class ExampleController {it

     @Autowired  

     private ExampleService service;       

}

  在Service中

@Component 

public class ExampleServiceImpl Implements ExampleService {

     @Autowired  

     private ExampleDao exampleDao;       

}

Spring 中的XML配置:

<!-- 自動掃描service,controller組件 -->

<context:component-scan base-package="com.example.service.*"/>

<context:component-scan base-package="com.example.controller.*"/>

  一般,在Bean爲添加@Component註解的狀況下,在啓動服務時,服務會提早報出如下代碼中這樣的異常狀況下,此時應該檢查相應Bean是否正確添加@Component註解,而在Controller層中未配置@Controller的狀況,啓動時服務可能不會爆出異常,可是你會發現頁面請求中的URL地址是正確的,當時不管如何也訪問不到Controller中相對應的方法,這個時候就須要那麼須要檢查@Controller註解和@RequestMapping註解是否已經添加到Class上面了。

 

org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'example'

 

No matching bean of type [com.example.ExampleService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

  下面就詳細介紹下@Component,@Controller註解:

 

org.springframework.stereotype.Component (implements java.lang.annotation.Annotation)

   在自動服務,spring初始化的時候,spring會把全部添加@Component註解的類做爲使用自動掃描注入配置路徑下的備選對象,同時在初始化spring@Autowired

註解相應的Bean時,@Autowired標籤會自動尋找相應的備選對象完成對bean的注入工做。

 

org.springframework.stereotype.Controller (implements java.lang.annotation.Annotation)

   @Controller註解是一個特殊的Component,它容許了實現類能夠經過掃描類配置路徑的方式完成自動注入,一般@Controller是結合@RequestMapping註解一塊兒使用的。

 

結語:

 

   經過了解Spring的註解能夠幫助咱們在使用Spring開發過程當中提升開發效率,同時也增強了咱們對Spring的認識。在使用Spring開發的過程當中,我我的更傾向於使用註解的方式,減小配置文件代碼。

相關文章
相關標籤/搜索