SpringBoot常用注解总结

在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项目中经常使用到的一些注解进行的总结,当然还有很多其他注解在这里就不一一赘述了。

原文地址:https://www.cnblogs.com/dafanjoy/p/10860749.html

时间: 2024-08-30 14:22:02

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

二、Springboot 常用注解

@SpringBootApplication: ??包含@Configuration.@EnableAutoConfiguration.@ComponentScan通常用在主类上.??很多SpringBoot开发者总是使用@Configuration,@EnableAutoConfiguration和 @ComponentScan注解他们的main类.由于这些注解被如此频繁地一块使用,SpringBoot提供一个方便的@SpringBootApplication选择.该??@SpringBoot

SpringBoot常用注解汇总

目录 SpringBoot controller层 service层 dao层 实体类注解 配置 事务注解 启动类 Mybatis SpringDataJpa-主键生成策略 一.SpringDataJpa标准用法 二.Hibernate主键策略生成 三.通过@GenericGenerator自定义主键生成策略 SpringBoot controller层 1.@Controller @Controller 用来响应页面,表示当前的类为控制器. 2.@RestController @RestCon

SpringBoot常用注解

1)@RestController和@RequestMapping @RequestMapping:注解提供路由信息.它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到home方法.http://localhost:8080/hello @RestController注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者.该注解有六个属性: params:指定request中必须包含某些参数值是,才让该方法处理. headers:指定request中必须包含某些指

SpringBoot常用注解解析

@RestController 将返回的对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中.绝大部分情况下都是直接以 JSON 形式返回给客户端,很少的情况下才会以 XML 形式返回.转换成 XML 形式还需要额为的工作,上面代码中演示的直接就是将对象数据直接以 JSON 形式写入 HTTP 响应(Response)中.关于@Controller和@RestController 的对比,我会在下一篇文章中单独介绍到(@Controller [email prot

Springboot 常用注解

@SpringBootApplication: 包含@Configuration.@EnableAutoConfiguration.@ComponentScan通常用在主类上. @Repository:用于标注数据访问组件,即DAO组件. @Service:用于标注业务层组件. @RestController:用于标注控制层组件(如struts中的action),包含@Controller和@ResponseBody. @ResponseBody:表示该方法的返回结果直接写入HTTP respo

spring和springboot常用注解总结

@RequestMapping 这个注解可以用于类和方法上,用于类上,表示父路径,如类上是demo,方法上是/demo1,那么访问路径就是demo/demo1 该注解有六个属性:params:指定request中必须包含某些参数值是,才让该方法处理.headers:指定request中必须包含某些指定的header值,才能让该方法处理请求.value:指定请求的实际地址,指定的地址可以是URI Template 模式method:指定请求的method类型, GET.POST.PUT.DELET

SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等.这章节开始,开始总结一些关于springboot的综合开发的知识点.由于SpringBoot本身是基于Spring和SpringMvc等各类spring家族的一个解决方案,可快速进行集合.故相关知识点其实大部分都是基于spring或者springmvc既有的知识点的.本章节,主要讲解的是关于web开发及springboot独有的一些常用注解进行说明. 常用注解 总结 最后 老生常谈 常用注解 @Spring

springboot中的常用注解

springboot中的常用注解个人觉得springboor中常用的注解主要可以分为三种:放入容器型注解.从容器中取出型注解和功能型注解.其中的放入容器型和从容器中取出型就是我们平时所说的控制反转和依赖注入的概念(个人版本- - - 可以看一看,别太当真 0.0) 放入容器型注解简介:个人觉得就是申明一个实例对象,然后将这个对象交给spring管理. 1.@Component:放在类上,把普通类实例化到spring容器中.可以说很多注解都是基于这个注解的. 2.@Bean: 放在方法上,用@Be

SpringBoot中常用注解@Controller/@RestController/@RequestMapping的区别

@Controller 处理http请求 @Controller //@ResponseBody public class HelloController { @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return "hello"; } } 如果直接使用@Controller这个注解,当运行该SpringBoot项目后,在浏览器中输入:loc