一,main函数层
1,@SpringBootApplication
主要由@ComponentScan,@EnableAutoConfiguration,@SpringBootConfiguration 组成
spring里有四大注解:@Service,@Repository,@Component,@Controller用来定义一个bean.@ComponentScan注解就是用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean
@SpringBootConfiguration作用与@Configuration作用相同,都是用来声明当前类是一个配置类.可以通过@Bean注解生成IOC容器管理的bean.
@EnableAutoConfiguration是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中  通过@Import注入了一个ImportSelector的实现类

2,@MapperScan
能够让别的类进行引用,再类上添加@Mapper注解
直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解,麻烦。在main中引入@MapperScan
@MapperScan("com.kfit.mapper")   扫描多个包  @MapperScan({"com.kfit.demo","com.kfit.user"})  

3,@ComponentScan
@ComponentScan用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类注册到IOC容器中
会被自动装配的注解包括@Controller、@Service、@Component、@Repository等等。
如果你有个类用@Controller注解标识了,那么,如果不加上@ComponentScan,自动扫描该controller,那么该Controller就不会被spring扫描到,更不会装入spring容器中,因此你配置的这个Controller也没有意义

4,@RestController
@RestController = @Controller + @ResponseBody
@ResponseBody的作用其实是将java对象转为json格式的数据

5,@Controller、@Service、@Component、@Repository
@Controller:控制层,用于标注控制层组件。
@Service:业务层,用于标注业务逻辑层主键。
@Repository:持久层,用于标注数据访问组件,即DAO组件。
@Component:当你不确定是属于哪一层的时候使用。

6,@RequestMapping 
在类的级别上的注解,会将一个特定请求或者请求模式映射到一个控制器之上
@RequestMapping(value = {"/hello", "/world", "/helloworld"})
@RequestMapping("/index")

7,@pathvariable ,@RequestParam ,@RequestBody  @Valid
@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中  一般用于get    作用:请求参数  content-type为application/x-www-form-urlencoded
@RequestBody接收的参数是来自requestBody中,即请求体  一般用于post   content-type一般为application/json

@pathvariable 作用:路径变量。顾名思义,就是要获取一个url 地址中的一部分值
@Valid 验证参数 在相关的实体类的相关字段添加用于充当验证条件的注解  在controller层的方法的要校验的参数上添加@Valid注解

8,@Autowired
@Autowired 是一个注释,它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。

9,如何在 Spring Boot 启动的时候运行一些特定的代码?
可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法。

@Component
 public class Supplement implements CommandLineRunner{
     @Override
     void run(String... args) throws Exception{
     
     };
 }