SpringBoot启动类与核心注解@SpringBootApplication
SpringBoot的项目一般都会有注解==*Application.java==标注的入口类,入口类中会有一个main方法,main方法是一个标准的java应用程序的入口方法,可以直接启动
@SpringBootApplication注解时SpringBoot的核心注解,用此注解标注的入口是应用启动类,通常会在启动类的main方法中通过 SpringApplication.run(App.class,args) 来启动SpringBoot应用
@SpringBootApplication注解的源码实现
@SpringBootApplication其实是一个组合注解,我们可以看下源代码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {
//此处省略
}
源码分析:
前四个注解是元注解,用来修饰当前注解,就像public类的修饰词,无实际功能。后三个注解是真正起作用的注解
主要有三个核心的注解
(1)@Configuration:
该注解类标识这个类可使用Spring IoC容器作为bean定义的来源。@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象被注册为在Spring应用程序中上下文的bean。
(2)@EnableAutoConfiguration:
启动自动配置,该注解会让SpringBoot根据当前项目锁依赖的jar包自动配置项目的相关配置项。
(3)@ComponentScan:
会自动扫描指定包下全部标有@Component的类,并注册成bean,当然包括@Component下的子注解:@Service,@Repository,@Controller;默认会扫描当前包和所有子包。
@SpringBoot配置
关闭某个自动配置
通过上面讲的@SpringBootApplication下的@EnableAutoConfiguration可以知道,SpringBoot会根据项目中的jar包依赖,自动做出配置,SpringBoot支持部分自动配置,如下:
假如我们添加mybatis依赖,但是不想自动配置mybatis,想自己手动配置,通过查看@SpringBootApplication的源码可以看出,关闭特定的自动配置可以使用@SpringBootApplication下的exclude参数,如:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
或者使用@EnableAutoConfiguration注解
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
@EnableAutoConfiguration(excludeName = "com.java.service")
如果不配置以上将会报错:
java.lang.IllegalStateException: Cannot load configuration class: org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
自定义SpringBoot启动图案
SpringBoot默认的启动图案是这样的
如果想把这个团换成其它的可以访问这个网址 修改启动图案点这里
将复制的图案存到一个banner.txt的文件里,然后放到与application.properties同目录下就可以了
再次启动可以看到刚刚设置的图案