咱们知道采用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