SpringBoot常用注解大全(详细)


SpringBoot的常用注解总结
本文仅为借鉴csdn上一位大佬总结学习,如有侵权,联系删除。

@SpringBootApplication

包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上;
在这里插入图片描述

相关注解说明
@ComponentScan用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类
@SpringBootConfiguration与@Configuration作用相同,都是用来声明当前类是一个配置类,这里表明是springboot主类使用的配置类
@EnableAutoConfiguration是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中

@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

@AutoWired、@Qualifier、@Resource

这3个注解都是基于注解方式进行自动装配,在容器里面将查找到的bean返回,一般@AutoWired用得最多,@Qualifier则需要配合@AutoWired使用,@Resource则是可以通过名字进行自动装配

注解说明
@AutoWired@Autowired默认按类型装配,如果发现找到多个bean,则按照name方式比对,如果还有多个,则报出异常
@Qualifierspring的注解,按名字注入 一般当出现两个及以上bean时,不知道要注入哪个,结合@AutoWired使用
@Resource默认按名称注入例如@Resource(name = “zhaozhao”)则根据name属性注入找不到则报错,若无name属性则根据属性名称注入,如果匹配不成功则按照类型匹配匹配不成功则报错。

@AutoWired
在这里插入图片描述
@Qualifier
当有一个接口的多个实现类时,只用@AutoWired会报错,因为它有多个接口的实现类,不知道你要找哪一个,这个时候就需要在注入bean的时候起个名字,然后用@Qualifier注解指定哪一个bean(按照名字注入与装配)
在这里插入图片描述
@Resource
该注解的使用相当于@AutoWired和@Qualifier配合使用的效果
在这里插入图片描述

@RequestMapping、@GetMapping、@PostMapping

这3个注解功能也是类似的,通过这3个注解来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,用在方法上,可以通过配置的url进行访问

注解说明
@RequestMapping@RequestMapping(url),通过该注解就可以通过配置的url进行访问,方式可以是get或post请求,两种方式均可
@GetMapping@GetMapping(url) ,功能类似的,只是这个限定了只能是Get请求
@@PostMapping@PostMapping(url),功能类似的,只是这个限定了只能是Post请求

@RequestMapping
发起get请求或者post请求都可以在这里插入图片描述
@GetMapping
只能用get请求
在这里插入图片描述
@PostMapping
只能发起post请求
在这里插入图片描述

@Value、@ConfigurationProperties、@PropertySource

注解说明
@Value用于获取bean的属性,一般用于读取配置文件的数据,作用在变量上
@ConfigurationProperties用于注入Bean属性,然后再通过当前Bean获取注入值,作用在类上
@PropertySource用于指定要读取的配置文件,可以和@Value或@ConfigurationProperties配合使用

@PropertySource不支持yml文件读取。
@Value
这里用yml配置文件进行演示,propres配置文件也是同样的效果,在application.yml配置文件里设置开发环境的的配置文件(dev),这样用@Value获取到的就是开发环境的配置文件的数据,切换成生产环境(pro)则获取到的是生产环境的数据
在这里插入图片描述
在这里插入图片描述
@ConfigurationProperties
该注解可以直接注入整个类的数据,作用于类

配置文件如下,这里使用pro环境
在这里插入图片描述
在这里插入图片描述
@PropertySource
注意:@PropertySource不支持yml文件读取。
配置文件如下:people.properties
在这里插入图片描述
测试
在这里插入图片描述
当然@PropertySource还可以和@Value配合使用,即一个一个注入值。

@Configuration、@Bean

@Configuration作用于类上面,表明这是一个配置类,@Bean产生一个Bean对象加入Spring IOC容器

注意:@Configuration标注在类上,相当于把该类作为spring的xml配置文件中,作用为:配置spring容器(应用上下文)

注解说明
@Configuration作用于类上表示这是一个配置类,可理解为用spring的时候xml里面的< beans>标签
@Bean产生bean对象加入容器,作用于方法,可理解为用spring的时候xml里面的标签

新建配置类,将User加入容器,并自定义生命周期
在这里插入图片描述
测试
在这里插入图片描述

@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue

这几个注解放在一起主要是经常在控制层用来接收参数的

注解说明
@RequestParam获取查询参数。即url?name=这种形式
@PathVariable获取路径参数。即url/{id}这种形式。
@RequestParam获取Body的参数,一般用于post获取参数
@RequestHeader获取请求头的信息
@CookieValue获取Cookie的信息
@RequestParam
@RequestParam主要用于接收url?后面的参数,get或post请求,只要后面的url?有参数都可以获取到对应的参数

@RequestParam注解有几个比较重要的属性,required 表示是否必须,默认为 true,必须。defaultValue 可设置请求参数的默认值。value 为接收url的参数名(相当于key值)。

示例代码如下

    @GetMapping("/requestParam")
    @ResponseBody
    public Map<String, String> requestParam(
            UserDto userDto,//通过一个实体类来接收,字段名必须一致
            @RequestParam(value = "id", required = false) String userId,
            @RequestParam(value = "name", required = false) String userName,
            @RequestParam(value = "pageIndex", required = true, defaultValue = "1") String pageIndex,
            @RequestParam(value = "pageSize", required = true, defaultValue = "5") String pageSize) {

        Map<String, String> map = new HashMap<>();
        map.put("userDto",userDto.toString());
        map.put("id", userId);
        map.put("name", userName);
        map.put("pageIndex", pageIndex);
        map.put("pageSize", pageSize);
        return map;
    }

运行
在这里插入图片描述
@PathVariable
该注解主要用于获取路径参数,像url/{id}/{name}这种形式的参数都可以,get获取post请求均可

示例代码如下:

    @PostMapping("/pathVariable/{id}/{name}")
    @ResponseBody
    public Map<String, String> pathVariable(
            @PathVariable(name = "id") String userId,
            @PathVariable(name = "name") String userName) {

        Map<String, String> map = new HashMap<>();
        map.put("id", userId);
        map.put("name", userName);
        return map;
    }

运行结果
在这里插入图片描述@RequestBody
该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求

示例代码如下:

    @PostMapping("/test01")
    @ResponseBody
    public UserDto test01(@RequestBody UserDto userDto) {
        return userDto;
    }

    @PostMapping("/test02")
    @ResponseBody
    public String test02(@RequestBody String str) {
        return str;
    }

运行结果
在这里插入图片描述
在这里插入图片描述
注意,如果要传多个参数过去只能将其封装成一个类,如果是出现了多个@RequestBody注解访问的时候会报400错误,例如下面这种代码就是错误的

    @PostMapping("/requestBody")
    @ResponseBody
    public Map<String,String> requestBody(
            @RequestBody(required = true) String id,
            @RequestBody(required = true) String name,
            @RequestBody(required = false) String sex,
            @RequestBody(required = false) String age
            ){

        Map<String,String> map = new HashMap<>();
        map.put("id","id");
        map.put("name","name");

        return map;
    }

@RequestHeader
示例代码如下

    @PostMapping("/requestHeader")
    @ResponseBody
    public String requestBody03(@RequestHeader(name = "Content-Type") String contentType){
        return contentType;
    }

结果
在这里插入图片描述
@CookieValue

@GetMapping("/demo3")
public void demo3(@RequestHeader(name = "myHeader") String myHeader,
        @CookieValue(name = "myCookie") String myCookie) {
    System.out.println("myHeader=" + myHeader);
    System.out.println("myCookie=" + myCookie);
}

加油叭 程序猿!
原文链接:https://blog.csdn.net/qq_40298902/article/details/107746642

  • 5
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常用的 Spring Boot 注解: 1. @SpringBootApplication:这是一个组合注解,包括 @Configuration、@EnableAutoConfiguration 和 @ComponentScan,用于标注 Spring Boot 应用的主类。 2. @RestController:用于标注 RESTful 架构的控制器类,同时也包括 @Controller 和 @ResponseBody 注解的功能。 3. @RequestMapping:用于映射 HTTP 请求 URL 到相应的控制器方法上。 4. @GetMapping:用于映射 HTTP GET 请求 URL 到相应的控制器方法上。 5. @PostMapping:用于映射 HTTP POST 请求 URL 到相应的控制器方法上。 6. @PutMapping:用于映射 HTTP PUT 请求 URL 到相应的控制器方法上。 7. @DeleteMapping:用于映射 HTTP DELETE 请求 URL 到相应的控制器方法上。 8. @RequestParam:用于将 HTTP 请求中的参数绑定到控制器方法的参数上。 9. @PathVariable:用于将 URL 中的变量绑定到控制器方法的参数上。 10. @RequestBody:用于将 HTTP 请求体中的数据绑定到控制器方法的参数上。 11. @ResponseBody:用于将控制器方法返回的数据直接写入 HTTP 响应体中。 12. @Autowired:用于自动装配 Spring Bean。 13. @Value:用于将配置文件中的属性值注入到 Spring Bean 中。 14. @Component:用于标注 Spring Bean。 15. @Service:用于标注业务逻辑层的 Spring Bean。 16. @Repository:用于标注数据访问层的 Spring Bean。 17. @Configuration:用于标注 Spring 配置类。 18. @EnableAutoConfiguration:用于自动配置 Spring Boot 应用。 19. @ConditionalOnProperty:用于根据配置文件中的属性值来决定是否启用某个配置项。 20. @EnableCaching:用于启用 Spring Cache。 21. @EnableScheduling:用于启用定时任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值