SpringBoot核心注解@SpringBootApplication和其他几个SpringBoot编写中常见注解

SpringBoot为一款整合框架的框架,该框架遵循“习惯优于配置”的原则,减少了xml繁琐的配置,支持全注解配置。
核心注解:@SpringBootApplication
其核心注解@SpringBootApplication为三个注解的组合!
@SpringBootApplication为SpringBoot核心启动类上的注解,点进去可知其由三个注解组合而成。
SpringBoot核心注解@SpringBootApplication和其他几个SpringBoot编写中常见注解_第1张图片

这三个注解分别是:
@SpringBootConfiguration
@ComponentScan
@EnableAutoConfiguration

一、@SpringBootConfiguration:

该注解由Spring原生注解@Configuraction封装而成。
SpringBoot核心注解@SpringBootApplication和其他几个SpringBoot编写中常见注解_第2张图片
带有@Configuration的类,可以用来代替 applicationContext.xml 配置文件,而配置文件内部的数据注入,可通过其内部的几个注解-如下,进行实现:
1、@Bean
用来代替 XML 配置文件里面的bean配置。
2、@ImportResource
如果有些通过类的注册方式配置不了的,可以通过这个注解引入额外的 XML 配置文件,有些老的配置文件无法通过 @Configuration 方式配置的非常管用。
3、@Import
用来引入额外的一个或者多个 @Configuration 修饰的配置文件类。

二、@ComponentScan:
该注解主要用来开启组件扫描,可以扫描该注解标注的类、以及该注解标注的类的目录路径下的类,并将其实例注册添加到Spring容器中。
此处需注意,由于Spring仅仅整合了自己的注解,并没有接收Mybatis的注解,因此SpringBoot整合Mybatis时,需要额外添加注解:@MapperScan("/指向mybatis的包路径")
SpringBoot核心注解@SpringBootApplication和其他几个SpringBoot编写中常见注解_第3张图片
@ComponentScan时Spring用来代替配置文件中的 component-scan 配置,并且可重复注解,即可以配置多个,用来配置注册不同的子包。

三、@EnableAutoConfiguration:
该注解主要用来提供自动装配,是这三个注解中最重要的一个注解。她是Spring Boot新添加的注解,提供了强大的自动依赖功能,是SpringBoot这么方便的大功臣。
SpringBoot核心注解@SpringBootApplication和其他几个SpringBoot编写中常见注解_第4张图片
自动装配原理:
@EnableAutoConfiguration注解的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:
从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;去重,并将exclude和excludeName属性携带的类排除;过滤,将满足条件(@Conditional)的自动配置类返回。

补充说明几个其他注解:
一、@ResponseBody和@RequestBody

1、@RestController,该注解为表现层注解,内部整合了@Controller和@ResponseBody,@ResponseBody限定数据的返回值如为字符串类型则直接返回字符串,如为对象等其他类型,则必须转成json类型。

2、@RequestBody注解,专门接收json格式,在restful风格接收添加、更新的对象数据时使用,此时前端必须返回对象的json数据格式,否则会报错。

二、@PathVariable 和 @RequestParam

1、@PathVariable注解为:路径变量。其获取值的目标,为url路径地址值中的一部分,RequestMapping 上说明了@RequestMapping(value="/demo/{id}"),我就是想获取你URL地址 /emp/ 的后面的那个 {id}。本注解经常用于restful风格的url中。@PathVariable的value可绑定路径变量传入的值到方法参数上,以解决前端路径变量与后台方法参数名不一致的问题。

2、@RequestParam注解为:请求参数。其获取值的目标,为“?”后的参数的值。其内有4个参数:String name、String value、boolean required、String defaultValue。前两个参数一样,指向请求参数的名称,在前端数据名称与后台数据名称不一致时,可使用该属性建立关系,即:可绑定url的参数传来的值到方法参数上。boolean required为该参数是否是必须要传入的,默认为true,不传入就会404。String defaultValue表示参数的默认值,在分页中经常使用。

综上,举例如下:
地址1:http://localhost:8080/test/demo/2
地址2:http://localhost:8080/test/demo?size=1
地址1就是路径参数,由@PathVariable获取;地址2就是请求参数,由@RequestParam获取。

你可能感兴趣的:(SpringBoot核心注解@SpringBootApplication和其他几个SpringBoot编写中常见注解)