Spring:Spring Boot常用注解大全

**  Spring Boot是一个由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。以下是对Spring Boot的详细介绍:**

一、发展沿革

2013年,Pivotal团队开始研发Spring Boot。

2014年4月,发布了全新开源的轻量级框架的第一个Spring Boot版本。

二、主要特点
**  1. 独立运行的Spring项目**:Spring Boot可以以jar包的形式独立运行,只需通过命令"java -jar xx.jar"即可运行。

**  2. 内嵌Servlet容器**:Spring Boot使用嵌入式的Servlet容器(例如Tomcat、Jetty或者Undertow等),应用无需打成WAR包。

**  3. 提供starter简化Maven配置**:Spring Boot提供了一系列的"starter"项目对象模型(POMs)来简化Maven配置。

**  4. 自带应用监控**:Spring Boot可以对正在运行的项目提供监控。

**  5. 无代码生成和xml配置**:Spring Boot不需要任何xml配置即可实现Spring的所有配置。

三、作用与价值
**  1. 创建独立的Spring应用程序**:Spring Boot使创建独立的、可运行的、基于Spring的生产级应用程序变得容易。

**  2. 简化配置和部署**:通过内嵌Servlet容器和简化的Maven配置,大大简化了应用程序的配置和部署过程。

**  3. 提供生产就绪型功能**:如指标监控、健康检查和外部配置等,使应用程序更容易地适应生产环境。

本文将对Spring Boot常用的一些注解进行讲解,欢迎大家关注与收藏。

Spring Boot注解大全可以归纳为以下几类:

1. 启动注解
**  @SpringBootApplication:这是一个组合注解,通常用于主应用程序类,标志着这是Spring Boot应用程序的入口点。它包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。**

java 复制代码
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2. 配置注解
①. @SpringBootConfiguration:继承自@Configuration注解,主要用于加载配置文件。

②. @EnableAutoConfiguration:开启自动配置功能,允许Spring Boot根据当前类路径下的包或者类来自动配置Bean。

③. @ComponentScan:主要用于组件扫描和自动装配,即自动扫描包路径下的@Component注解进行注册Bean实例到Context中。

3. Controller相关注解
①. @Controller:用于定义Controller类。

②. @RestController:复合注解,包含@Controller和@ResponseBody,用于创建RESTful Web服务。

③. @RequestMapping:用于定义请求URL到Controller方法的映射。

④. @GetMapping:用于将HTTP GET请求映射到特定处理程序的方法注解。

⑤. @PostMapping:用于将HTTP POST请求映射到特定处理程序的方法注解。

⑥. @RequestBody:用于读取请求体中的数据并绑定到方法参数上。

java 复制代码
@RestController
@RequestMapping("test")
@Slf4j
public class TestController {

}

3. 取请求参数值注解
①. @PathVariable:用于获取URL中的参数值。

java 复制代码
RequestMapping("user/get/mac/{macAddress}")
public String getByMacAddress(@PathVariable String macAddress){
    //do something;
}

②. @RequestParam:用于获取查询参数值。

java 复制代码
 @PostMapping("/test")
    public String getOrgList(
            @RequestParam(value = "page") String page,
            @RequestParam(value = "pageSize", required = false) String pageSize,
            @RequestParam(value = "keyParam", required = false) String keyParam,
            ) {
            
}

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

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

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

④. @Autowired:默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。

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

⑥. @Profile:指定Bean在哪个环境下被激活。

⑦. @DependsOn:依赖的Bean注册完成后,才注册当前类,依赖Bean不存在会报错,用于控制Bean加载顺序。

⑧. @PostConstruct:在Bean的属性都注入完毕后,执行注解标注的方法进行初始化工作。

java 复制代码
    @Bean
    @DependsOn({ "slaveDatasource", "testDatasource"})
    @Primary
    public DynamicDataSource datasource(DataSource slaveDatasource,DataSource imDatasource) {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put(Databasetype.SLAVE.value, slaveDatasource);
        targetDataSources.put(Databasetype.TEST.value, imDatasource);
        DynamicDataSource dataSource = new DynamicDataSource();
        dataSource.setTargetDataSources(targetDataSources);
        dataSource.setDefaultTargetDataSource(slaveDatasource);
        return dataSource;
    }

5. 全局异常处理

1.@ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。

2.@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。

java 复制代码
    @ExceptionHandler(value = Exception.class)
    public String exception(HttpServletRequest req, HttpServletResponse resp, Exception e, Model model) {
    // 处理逻辑
    }
相关推荐
小码哥_常1 小时前
别再被误导!try...catch性能大揭秘
后端
无巧不成书02182 小时前
30分钟入门Java:从历史到Hello World的小白指南
java·开发语言
苍何3 小时前
30分钟用 Agent 搓出一家跨境网店,疯了
后端
ssshooter3 小时前
Tauri 2 iOS 开发避坑指南:文件保存、Dialog 和 Documents 目录的那些坑
前端·后端·ios
追逐时光者3 小时前
一个基于 .NET Core + Vue3 构建的开源全栈平台 Admin 系统
后端·.net
程序员飞哥3 小时前
90后大龄程序员失业4个月终于上岸了
后端·面试·程序员
zs宝来了4 小时前
Playwright 自动发布 CSDN 的完整实践
java
彭于晏Yan5 小时前
Redisson分布式锁
spring boot·redis·分布式
吴声子夜歌5 小时前
TypeScript——基础类型(三)
java·linux·typescript
GetcharZp5 小时前
Git 命令行太痛苦?这款 75k Star 的神级工具,让你告别“合并冲突”恐惧症!
后端