在SpringBoot框架中,注解做为一种隐式配置,极大的简化了之前xml文件的配置方式。SpringBoot中包含许多种类的注解,这里对在SpingBoot项目中经常使用到的一些注解的进行大致的归纳总结;

一、启动相关

1、@SpringBootApplication

在SpirngBoot启动类里面,都加入了此启动注解,此注解是个组合注解,包括了@SpringBootConfiguration 、@EnableAutoConfiguration和@ComponentScan注解。

  • @SpringBootConfiguration 继承至@Configuration,其实两种功能一致,都是标注该类为配置类
  • @EnableAutoConfiguration 这个注解是SpirngBoot自动配置的核心所在,通过此注解,能所有符合自动配置条件的bean的定义加载到spring容器中。
  • @ComponentScan 该注解会扫描当前包及子包下面被纳入sping容器管理的类。

注意事项:

  • 一般我们在实际项目中会根据自己的需要排除一些无需自动配置的类,例如我们会配置自己的数据库,所以就不需要springboot自动注入数据源,这可以利用exclude进行排除
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
  • 当需扫描第三方jar包时,我们可以通过在配置类中使用@Configuration与@ComponentScan来引入第三方jar包下的类
@Configuration
@ComponentScan(basePackages = {"com.test.service"}) //引入第三方jar包下的类

2、@Import

@Import注解可用来导入一个或者多个 Spring 配置文件,特别是第三方jar包下的一些配置类,需要通过Import注解进行加载,代码如下所示

@Import({KafkaConfig.class, JedisConfig.class})  //引入第三方jar包里配置类

二、配置相关

以一般的的配置类中用到的注解为例

1、@Configuration

@Configuration专门用来标注配置类,它一般会配合

2、@Bean

使用@Bean注解拿到配置返回相关实例,并放入sping容器中统一管理

3、@PropertySource

目的是加载指定路径下的属性文件

5、@Value

配合@PropertySource注解使用,指定该字段对应的配置文件中的内容

4、@Order

利用@Order控制配置类的加载顺序

结合以上注解对kafka进行配置示例代码如下

@Configuration
@PropertySource("classpath:spring-kafka.properties")
@Order(2)
public class KafkaConfig { @Value("${spring.kafka.bootstrap-servers}")
private String bootstrapServers; @Bean
public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Object, Object>> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<Object, Object>();
factory.setConsumerFactory(consumerFactory());
factory.setConcurrency(1);
// factory .getContainerProperties().setPollTimeout(1000);
return factory;
}
}

三、构造相关

1、@Service

用于标注服务层,主要用来进行业务的逻辑处理

2、@Repository

用于标注持久层,主要用来进行数据库相关操作

3、@Component

一个通用的注解,可以注解各种组件,就是说当我们需要注入sping容器中bean类没有明确分类时(不属于@service、@Repository等的时候),我们就可以使用@Component来标注这个类。

4、@Scope

spring容器管理bean默认是单例模式,如果你需要使用多例模式可以通过@Scope("prototype")注解来实现。

5、@Autowired

这个就很简单了,用于Spring容器中Bean类实例的注入

6、@PostConstruct

在Bean初始化之后(构造方法和@Autowired之后)执行指定操作。如果在项目中有些操作需要在Bean类构造后执行,可以使用@PostConstruct注解,实例代码如下

@Component
public class demo {
@PostConstruct
public void start() {
//在构造方法和@Autowired注入实例后执行
}
}

四、web相关

1、@Controller 和 @RestController

控制器的注解,处理http请求的入口,这两个注解的主要区别在于@Controller中如果需要返回json数据需要使用@ResponseBody注解来配合,直接用@RestController则直接返回json数据

2、@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping注解有六大属性

value, method;

  • value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

  • method: 指定请求的method类型, GET、POST、PUT、DELETE等;

consumes,produces;

  • consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

  • produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

params,headers;

  • params: 指定request中必须包含某些参数值是,才让该方法处理。

  • headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求;

RequestMapping的简化注解有:

@GetMapping 等同于 @RequestMapping(method = RequestMethod.GET)
@PostMapping 等同于 @RequestMapping(method = RequestMethod.POST)
@PutMapping 等同于 @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping 等同于 @RequestMapping(method = RequestMethod.DELETE)
@PatchMapping 等同于 @RequestMapping(method = RequestMethod.PATCH)

3、@RequestBody

RequestBody注解允许request的参数在reqeust体中,也就是后端以实体的方式接收前端发送的数据

4、@RequestParam

RequestParam注解则是以不同参数之间用&分隔的方式接收前端发送的数据

结合以上注解的常规示例代码如下

@RestController
@RequestMapping("/api")
public class ApiController extends BaseController { @PostMapping("/login")
public User login(@RequestBody User user){
//代码
} @GetMapping("/getUser")
public User getUser(@RequestParam String userName, @RequestParam String userPhone){
//代码
} }

以上就是在SpirngBoot项目中经常使用到的一些注解进行的总结,当然还有很多其他注解在这里就不一一赘述了。

关注微信公众号,查看更多技术文章。

SpringBoot常用注解总结的更多相关文章

  1. SpringBoot 常用注解(持续更新)

    SpringBoot 常用注解 @SpringBootApplication @Bean @ComponentScan @ControllerAdvice @ExceptionHandler @Res ...

  2. SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置

    一.SpringBoot常用注解二.SpringBoot自动配置机制SpringBoot版本:1.5.13.RELEASE 对应官方文档链接:https://docs.spring.io/spring ...

  3. 接近8000字的Spring/SpringBoot常用注解总结!安排!

    0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章.如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide:http ...

  4. Spring/SpringBoot常用注解总结

    转自:[Guide哥] 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使 ...

  5. SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解

    SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...

  6. 菜鸟的springboot常用注解总结

    菜鸟的springboot常用注解总结 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用 ...

  7. SpringBoot常用注解的介绍及使用 - 转载

    常用注解 @springBootApplication 系统启动类注解,此注解是个组合注解,包括了:@SpringBootConfiguration,@EnableAutoConfiguration, ...

  8. 结合参数接收响应转换原理讲解SpringBoot常用注解

    一.常用注解回顾 1.1 @RequestBody与@ResponseBody //注意并不要求@RequestBody与@ResponseBody成对使用. public @ResponseBody ...

  9. springboot系列五、springboot常用注解使用说明

    一.controller相关注解 1.@Controller 控制器,处理http请求. 2.@RespController Spring4之后新加的注解,原来返回json需要@ResponseBod ...

  10. SpringBoot常用注解(三)

    最全的Java常用开发注解 转   https://blog.csdn.net/weixin_40753536/article/details/81285046              Spring ...

随机推荐

  1. [BZOJ1083][SCOI2005]繁忙的都市 最小生成树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1083 由kruskal算法原理可知,我们对一张无向图做普通的最小生成树,连上的最后一条边就 ...

  2. TNS-00511: 无监听程序

    这里到服务里面打开 tns 的监听服务

  3. Katalon Studio(二) 进阶战の Jenkins集成 analytics.katalon 集成

    本教程只针对Katalon Studio 与CI工具之一Jenkins的集成与脚本集的测试报告可视化简单操作. 1.新建一个job 2.新建一个自由风格的job 3.构建触发器 4.构建Windows ...

  4. 洛谷 P1615 西游记公司

    题目背景 一道极其无厘头的题目 题目描述 事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了.然后,他们创办了三个公司 ...

  5. caffe编译

    用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源 也就是说make -j ...

  6. java自动机器人自动生成修姓名工具类

    public class GenerateName { public static String getName() { Random random = new Random(); String[] ...

  7. bin/hadoop checknative

    bin/hadoop checknative #检查是否支持本地库 [root@node01 ~]# hadoop checknative19/05/28 23:12:46 INFO bzip2.Bz ...

  8. mysql允许远程连接的命令

    mysql> use mysql; mysql> GRANT ALL ON *.* TO admin@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION ...

  9. jQuery-图片的放大镜显示效果方法封装

    (function($){ $.fn.jqueryzoom = function(options){ var settings = { xzoom: 200, //zoomed width defau ...

  10. KBE_那些事

    批处理文件不要放在工具栏执行,这里有坑:工具栏运行批处理文件,当前路径(%cd%)不是批处理文件所在路径 日志的输出(DEBUG_MSG 和 INFO_MSG)都被输出在({资产库}/logs/*.l ...