最近通过做一些小项目来复习 SpringBoot 的相关知识,在这里顺便把 SpringBoot 中的注解做下记录,方便后续复习。
一、@SpringBootApplication
- @SpringBootApplication 包含以下三个注解: @Configuration、@EnableAutoConfiguration、@ComponentScan ;
- 通常用在主类上;
注解 | 说明 |
---|
@ComponentScan | 用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类 |
@SpringBootConfiguration | 与@Configuration作用相同,都是用来声明当前类是一个配置类,这里表明是springboot主类使用的配置类 |
@EnableAutoConfiguration | 是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中 |
![在这里插入图片描述](https://img-blog.csdnimg.cn/2cd79e85b7104ed39694ade0246752dd.png)
二、@Component、@Service、@Controller、@Repository
- 这几个注解放在一起是因为功能基本一样的,都是将类注入到spring容器中,只不过它们使用的场景不同;
- 被 @Component, @Service, @Controller, @Repository 注解标注的类,这些类会被纳入进spring容器中管理。
注解 | 说明 |
---|
@Repository | 持久层(dao)注入spring容器 |
@Service | 业务逻辑层(server)注入spring容器 |
@Controller | 控制层(controller)注入spring容器 |
@Component | 普通pojo注入spring容器 |
三、@ResponseBody
- @ResponseBody可以作用在方法上或类上;
- 表示该方法的返回结果直接写入 HTTP response body 中,而不会被解析为跳转路径,即不会经过视图解析器,返回什么数据即在页面输入什么数据。
注解 | 说明 |
---|
@ResponseBody | @ResponseBody的作用其实是将java对象转为json格式的数据。 |
四、@RestController
- 该注解是 @Controller、@ResponseBody 的结合体;
- 一般用于类,作用等于在类上面添加了@ResponseBody和@Controller;
- 比如,用在 Controller 类上;
![在这里插入图片描述](https://img-blog.csdnimg.cn/6de713b3409e46cf8c106ef64a62783f.png)
五、@AutoWired、@Qualifier、@Resource
- 这3个注解都是基于注解方式进行自动装配,在容器里面将查找到的bean返回;
- 一般@AutoWired用得最多,@Qualifier则需要配合@AutoWired使用,@Resource则是可以通过名字进行自动装配;
注解 | 说明 |
---|
@AutoWired | @Autowired默认按类型装配,如果发现找到多个bean,则按照name方式比对,如果还有多个,则报出异常 |
@Qualifier | spring的注解,按名字注入 一般当出现两个及以上bean时,不知道要注入哪个,结合@AutoWired使用 |
@Resource | 默认按名称注入例如@Resource(name = “zhaozhao”)则根据name属性注入找不到则报错,若无name属性则根据属性名称注入,如果匹配不成功则按照类型匹配,匹配不成功则报错。该注解的使用相当于@AutoWired和@Qualifier配合使用的效果 |
![在这里插入图片描述](https://img-blog.csdnimg.cn/9a947705320c449ca84532e6b89a04c1.png)
六、@RequestMapping、@GetMapping、@PostMapping
- 这3个注解功能也是类似的;
- 通过这3个注解来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,用在方法上,可以通过配置的url进行访问;
注解 | 说明 |
---|
@RequestMapping | @RequestMapping(url),通过该注解就可以通过配置的url进行访问,方式可以是get或post请求,两种方式均可 |
@GetMapping | @GetMapping(url) ,功能类似的,只是这个限定了只能是Get请求 |
@PostMapping | @PostMapping(url),功能类似的,只是这个限定了只能是Post请求 |
![在这里插入图片描述](https://img-blog.csdnimg.cn/68d1b0ece80442819ecd2f112bc27c00.png)
七、@Value、@ConfigurationProperties、@PropertySource
注解 | 说明 |
---|
@Value | 用于获取bean的属性,一般用于读取配置文件的数据,作用在变量上 |
@ConfigurationProperties | 用于注入Bean属性,然后再通过当前Bean获取注入值,作用在类上,可以直接注入整个类的数据 |
@PropertySource | 用于指定要读取的配置文件,可以和@Value或@ConfigurationProperties配合使用,不支持yml文件读取 |
八、@Configuration、@Bean
- @Configuration作用于类上面,表明这是一个配置类;
- @Bean产生一个Bean对象加入Spring IOC容器;
- 注意:@Configuration标注在类上,相当于把该类作为spring的xml配置文件中,作用为:配置spring容器(应用上下文);
- 一般这两个注解同时配合使用;
注解 | 说明 |
---|
@Configuration | 作用于类上表示这是一个配置类,可理解为用spring的时候xml里面的< beans>标签 |
@Bean | 产生bean对象加入容器,作用于方法,可理解为用spring的时候xml里面的标签 |
![在这里插入图片描述](https://img-blog.csdnimg.cn/168725ee10464e59a6e1ae63782dd015.png)
九、@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue
- 这几个注解放在一起主要是经常在控制层用来接收参数的;
注解 | 说明 |
---|
@RequestParam | 获取查询参数。即url?name=这种形式;主要用于接收url?后面的参数,get或post请求,只要后面的url?有参数都可以获取到对应的参数 |
@PathVariable | 获取路径参数。即url/{id}这种形式;主要用于获取路径参数,像url/{id}/{name}这种形式的参数都可以,get获取post请求均可 |
@RequestBody | 用于获取请求体数据(body),get没有请求体,故而一般用于post请求;注意:如果要传多个参数过去只能将其封装成一个类,如果是出现了多个@RequestBody注解访问的时候会报400错误 |
@RequestHeader | 获取请求头的信息 |
@CookieValue | 获取Cookie的信息 |
![在这里插入图片描述](https://img-blog.csdnimg.cn/142fc18ff2e149e3bbdec2114d075f58.png)