Spring註解自動注入Bean

咱們知道採用spring註解時,配置以下:java

<context:annotation-config />  
  
<context:component-scan base-package="cn.itkt"></context:component-scan>

這樣的話,在com包及其全部子包下的全部類若是含有@Component、@Controller、@Service、@Repository等註解的話都會自動歸入到Spring容器中,可是每一個類都一個個加上註解,有時不免以爲繁瑣,其實Spring也爲咱們提供了自動爲類加上註解的功能。配置以下:spring

<context:component-scan base-package="cn.itkt" use-default-filters="false">  
    <context:include-filter type="regex" expression="cn.itkt.*.service.*.*" />  
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />  
</context:component-scan>

咱們能夠看到加了context:include-filter標籤和context:exclude-filter標籤。express

context:include-filter.net

此標籤的含義是:在其掃描到的全部類中,所有自動加上註解並歸入Spring容器中,好比有個類爲code

public class StudentService implements IStudentService {  
}

那麼該標籤等用於爲StudentService類加上@Component註解,且bean的id爲studentService。component

@Component("studentService")  
public class StudentService implements IStudentService {  
}

context:exclude-filterxml

此標籤的含義是:排除掃描到的全部類,不歸入Spring容器中。get

 

但須要注意的是,採用自動注入,類名不能相同(即使包名不一樣),由於自動注入時,id與類名相同,因此若是兩個類名同樣的話,會由於Bean的id相同而報錯。it

若是類名必定要相同的話,只能是其中一個類,手動加上註解並將名稱改成其餘。io

相關文章
相關標籤/搜索