SpringBoot之@SpringBootApplication
首先要明白这个概念,需要你在java基础对自定义注解和让注解生效有一定的理解
1、标识类是程序的入口
作为一个完整的springboot开发的web程序,这个注解是必不可少的;1.x的版本和这个有区别,大家参照文档去复制。
这个注解的作用是说明此类事SpringBoot的主配置类,SpringBoot应该运行这个类的main方法来启动SpringBoot应用
package com.qs;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
2、进一步深入
按住control查看这个注解的源码,回顾一下注解的基础
@Target:表示这个注解用在什么地方,比如类上、属性上、方法上、参数上等
@Retention:表示这个注解在什么时候有效,一般都是RetentionPolicy.RUNTIME
@Documented:表示可以生成文档,回忆一下JAVA_HOME/bin/目录下的javadoc命令
@Inherited:表示是类有父子关系时,注解的作用域
@SpringBootConfiguration:spring的配置文件就是被这货给取代了,点击再看看就会发现这个注解上还有一个注解叫@Configuration,发现它上面有一个@Component,卧槽,是不是认识;
@EnableAutoConfiguration:大家发现没有,我们写的控制器根本都没有配置到xml中,写好放那里就完事儿了,为什么它能直接被我们访问??这就是它的功劳
@ConponentScan:这个就是之前在applicationContext.xml配置的扫描标签,回忆一下是不是叫<context:component-scan base-package=“包路径”/>
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.springframework.boot.autoconfigure;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java