SpringBoot 常用注解有哪些?

想知道SpringBoot 常用注解都有哪些?哪个兄弟可以告知一下呢?

@Configuration
把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

@Lazy(true)
表示延迟初始化。

@Service
用于标注业务层组件。

@Controller
用于标注控制层组件

@Repository
用于标注数据访问组件,即DAO组件。

@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Scope
用于指定scope作用域的(用在类上)。

@PostConstruct
用于指定初始化方法(用在方法上)。

@PreDestory
用于指定销毁方法(用在方法上)。

@DependsOn
定义Bean初始化及销毁时的顺序。

@Primary:
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。

@Autowired
默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("userService") 存在多个实例配合使用

@Resource
默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

@PostConstruct
初始化注解。

@PreDestroy
摧毁注解 默认 单例 启动就加载。

@Async
异步方法调用。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/819279
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:springboot中如何使用线程?
  • 除此之外, 这篇博客: springBoot中常用的参数注解中的 2.话不多说,直接上代码看看如何使用以上注解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1.路径变量:路径变量使用@PathVariable注解,@PathVariable注解可以一个一个参数来接收,也可以直接使用一个map来进行接收,注意写法的区分。

    @RestController
    public class ParamController {
        /*路径变量*/
        @GetMapping("/pathValue/{id}/{name}")
        public Map pathValue(@PathVariable("id") Integer id,
                             @PathVariable("name") String name,
                             @PathVariable Map pv){
            Map map=new HashMap<String,Object>();
    
            map.put("id",id);
            map.put("name",name);
            map.put("pv",pv);
    
            return map;
        }
    }
    
    <!--创建前端进行测试-->
     <a href="pathValue/50/小猪">路径变量</a>
    

    可以看到使用map和一个一个的传参数,得到的结果是一样的。
    在这里插入图片描述
    2.获取请求头:获取请求头使用@RequestHeander注解,有不了解请求头的小伙伴可以去

    HTTP请求报文了解一下什么是请求头,请求头也可以使用map来一次性获取全部的参数。
        /*获取请求头*/
        @GetMapping("/heand")
        public Map getHeand(@RequestHeader("User-Agent") String userAgent,
                            @RequestHeader Map ua){
            Map map=new HashMap<String,Object>();
            map.put("userAgent",userAgent);
            map.put("ua",ua);
    
            return map;
        }
    

    创建一个html文件测试一下

    <!--获取请求头-->
    <a href="/heand">获取请求头</a></br>
    

    在这里插入图片描述
    可以看到使用map和使用一个参数其实都可以获取到对应的请求头数据。
    3.获取请求参数:获取请求参数使用@RequestParam注解,参数不必多说大家应该很了解,就是跟在连接后面使用问号隔开的参数。和上面的一样,请求参数也可以使用map来统一获取。

     /*获取请求参数*/
        @GetMapping("/param")
        public Map getParam(@RequestParam("id") String id,
                            @RequestParam("name") String name,
                            @RequestParam Map rp){
            Map map=new HashMap<String,Object>();
    
            map.put("id",id);
            map.put("name",name);
            map.put("rp",rp);
    
            return map;
        }
    

    创建一个html测试一下

    <!--获取请求参数-->
    <a href="/param?id=001&name=小猪">获取请求参数</a></br>
    

    在这里插入图片描述
    可以看到和上面的一样,map和单个获取的结果也是一样的。
    4.获取cookie值:不知道什么是cookie的小伙伴可以去Cookie介绍去了解了解。cookie就不能用map来获取了,但是cookie有专门的实体类,实体类里面可以获取到很多信息,话不多说直接上代码。

    /*获取cookie值*/
        @GetMapping("/cookie")
        public Map getCookie(@CookieValue("_seeyon") String _seeyon,
                             @CookieValue("_seeyon") Cookie cookie){
            Map map=new HashMap<String,Object>();
            map.put("seeyon",_seeyon);
            map.put("cookie",cookie.getName()+"===>"+cookie.getValue());
    
            return map;
        }
    

    简单创建一个html测试一下

    <!--获取Cookie-->
    <a href="/cookie">获取Cookie</a>
    

    在这里插入图片描述
    5.获取请求体:不了解请求体的可以去这里了解了解HTTP请求报文,请求体只有post请求才能拥有,get请求是没有请求体的。请求体的获取相对简单,一个参数就可以获取到。

      /*获取请求体*/
        @PostMapping("/body")
        public Map getBody(@RequestBody String content){
            Map map=new HashMap<String,Object>();
    
            map.put("content",content);
    
            return map;
        }
    

    前端可以通过Form标签来创建请求体,具体可以去前端发送请求体的几种方式 了解一下,创建一个html测试一下

    <!--获取请求体-->
    <form action="/body"  method="post">
        账号:<input type="text" name="user">
        密码:<input type="password" name="pwd">
        <input type="submit" value="登入">
    </form>
    

    在这里插入图片描述
    6.获取request域属性:获取request域属性使用@RequestAttribute注解,该注解可以获取到传过来的request域里面的数据。

     /*获取request域属性*/
        @GetMapping("/forWard")
        public String getForword(HttpServletRequest request){
            request.setAttribute("id",123);
            request.setAttribute("name","小猪");
            return "forward:/ra";
        }
    
        @ResponseBody
        @GetMapping("/ra")
        public Map getRa(@RequestAttribute("id") Integer id,
                         @RequestAttribute("name") String name){
            Map map=new HashMap<String,Object>();
    
            map.put("id",id);
            map.put("name",name);
    
            return map;
        }
    

    这里直接用两个接口来测试
    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^