前情提要
之前的系列篇每篇都有創建並啓動一個啓動類,主要是用於自動掃描並實例化所有的bean,而啓動類的掃描默認是掃描與該啓動類同包以及其子包下的類,有時候我們還需要修改或者說是添加自動掃描的包的位置,接下來就通過一個簡單的例子來講解如何實現
改變啓動類自動掃描的包
改變啓動類自動掃描的包的原理其實很簡單,就是通過ComponentScan註解來指定需要掃描的包basePackages,也可以直接指定需要掃描的類basePackageClasses
下面我在項目中創建了兩個包:org.test1和org.test2,創建的啓動類Main.java至於org.test1下面,那麼在使用啓動類默認的自動掃描的包時,org.test2包下的註解類是不會被掃描的,在Main.java使用ComponentScan註解即可指定掃描org.test2下的註解也被掃描了,代碼如下:
package org.framework.demo.section1;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.ComponentScan;
/**
* 在SpringBoot中簡單使用Servlet
* 通過註解註冊Servlet
* @author chengxi
*/
@SpringBootApplication
@ComponentScan(basePackages = {"org.test1",
"org.test2"})
public class ServletApp2 {
public static void main(String[] args){
SpringApplication app = new SpringApplication(ServletApp2.class);
app.run(args);
}
}
在啓動類中添加了該註解之後,即可掃描org.test2不同包下的註解類了,這裏需要注意的是:在修改了自動掃描的包的情況下,默認的自動掃描與啓動類同包以及子包下的註解類就不生效了,如果還想要自動掃描與啓動類同包以及子包下的註解類的話,就需要手動加上,這裏就加上了org.test1