最近在看spring-boot的东西,然后搭建了spring-boot的简单项目。但是在spring的入口处加载的时候一直加载不到。最后看了@SpringBootApplication的源码才知道
@ComponentScan 如果不设置basePackage的话 默认会扫描包的所有类,所以最好还是写上basePackage ,减少加载时间。默认扫描**/*.class
路径 比如这个注解在com.first.springbootproject.springboot 下面 ,那么会扫描这个包下的所有类还有子包的所有类,比如包com.first.springbootproject.springboot.helloworld的应用。
综上所述我们可以知道:
SpringBootApplication启动时会默认扫描主类当前包及子包,如果需要扫描主类当前包外的其他包或不扫描当前包下的特定包或类,可通过下列属性实现:
@ComponentScan(basePackages={"com.first.springbootproject.springboot.helloworld"})
通过上面的注释spring在启动的时候会按照相关的路径进行对@Component元素的加载。不会在进行全部的扫描进行加载。占用资源的情况。
除了上面的这种改变路劲的方式之外,我们还可以通过配置xml文件,对basePackages的路劲进行设置。
1.通配符形式 <context:component-scan base-package="com.*" /> 2.全路径 <context:component-scan base-package="com.test" />
至此我们的spring-boot项目的类加载路劲的指定设置完毕。如果想要加载多个路劲可以使用逗号分隔的形式,对类进行加载。如下这种方式: