-
@ComponentScan注解
-
basePackages的方式和basePackageClasses的区别?
-
useDefaultFilters有什么用?
-
常见的过滤器有哪些类型?
-
@ComponentScan是在哪个类中处理的?解析过程?
第一个问题
目前有两种注册bean的方式
xml
@Bean注解
通常项目中大部分需要交给spring去管理,为了方便,spring提供了批量注册的方式,就是@ComponentScan
所以这个注解的作用就是批量注册bean
这个注解会让spring去扫描某些包以及子包中所有类,满足条件的类作为bean、注册到spring容器中
下面讲解一下这个过程
spring会扫描指定的包,并且会递归下面的子包,得到一群类的数组,这些类会经过各种过滤器,剩下的类会被注册到容器中
那么我们可以通过value,backPackages,basepackageClasses、这三个参数来控制
过滤器则是通过 useDefaultFilters、includeFilters、excludeFilters 这三个参数来控制过滤器
默认情况下,任何参数都不设置的情况下,此时,
会将@ComponentScan修饰的类所在的包作为扫描包;
默认情况下useDefaultFilters为true,这个为true的时候,spring容器内部会使用默认过滤器,
规则是:凡是类上有
@Repository、@Service、@Controller、@Component
这几个注解中的任何一个的,
那么这个类就会被作为bean注册到spring容器中,
所以默认情况下,只需在类上加上这几个注解中的任何一个,这些类就会自动交给spring容器来管理了。
学习网站 http://h5ip.cn/study