SpringBoot入门系列篇(十):改变启动类自动扫描的包

前情提要

之前的系列篇每篇都有创建并启动一个启动类,主要是用于自动扫描并实例化所有的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){

        //关闭banner的输出
        SpringApplication app = new SpringApplication(ServletApp2.class);
//        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);
    }
}
在启动类中添加了该注解之后,即可扫描org.test2不同包下的注解类了,这里需要注意的是:在修改了自动扫描的包的情况下,默认的自动扫描与启动类同包以及子包下的注解类就不生效了,如果还想要自动扫描与启动类同包以及子包下的注解类的话,就需要手动加上,这里就加上了org.test1


你可能感兴趣的:(java-web开发,Spring,SpringBoot入门总结)