在使用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開發的過程當中,我我的更傾向於使用註解的方式,減小配置文件代碼。