这一篇接着上一篇的继续写,上一篇中说了一下再组件上加bean注解的方式。在实际开发中呢 包扫描的方式用的比较多如:

在配置文件中用这个配置。那么如果用注解的方式进行扫描的就用@ComponentScan这个注解,作用在配置类上,value值指定我们需要扫描的包

测试结果:

控制台打印出了IOC容器中所有的组件。
如果需要过滤掉容器中某一类组件可以使用:excludeFilters在加上过滤规则

这个就是过滤掉有@Controller这个注解的组件。

再次打印:bookController已经不再容器中了。
还有一个是includeFilters这个注解:按照指定的规则包含哪些组件(只要哪些组件),下面把excludeFilters属性替换成includeFilters属性看是不是只包含含有Controller注解的组件呢?

显然是不是的。是因为ComponentScan注解中有useDefaultFilters一个属性 默认值是true,默认是对@Component、@Repository、@Controller和JavaEE6的ManagedBean和javax.inject.Named进行扫描管理,所以这里需要对这个属性设置false才可以。


网友评论