什么是SpringBoot?,它有什么好处以及Spring Boot 常用注解详解。

Spring Boot 概述

什么是Spring Boot?

Spring Boot是Spring框架的一个子项目,旨在简化基于Spring的应用开发过程。它通过"约定优于配置"的原则,提供了一系列自动配置和快速开发的特性,使开发者能够快速搭建独立运行的、生产级的Spring应用程序。

Spring Boot的核心特点

  1. 自动配置:根据项目依赖自动配置Spring应用

  2. 起步依赖:简化依赖管理,提供功能化的依赖组

  3. 内嵌服务器:内置Tomcat、Jetty或Undertow,无需部署WAR文件

  4. 命令行界面:支持使用Groovy脚本快速开发

  5. Actuator:提供生产就绪功能,如健康检查、指标收集等

Spring Boot的主要好处

1. 简化配置

  • 作用:大幅减少XML配置和样板代码

  • 示例:自动配置数据源、事务管理等

  • 好处:开发者可以更专注于业务逻辑而非配置

2. 快速开发

  • 作用:提供快速启动模板和开发工具

  • 示例:Spring Initializr在线生成项目结构

  • 好处:几分钟内即可搭建可运行的项目框架

3. 微服务友好

  • 作用:天然支持微服务架构

  • 示例:轻松集成Spring Cloud组件

  • 好处:简化分布式系统开发

4. 生产就绪

  • 作用:内置监控和管理端点

  • 示例:/actuator/health端点提供健康检查

  • 好处:方便运维和监控应用状态

5. 丰富的生态系统

  • 作用:无缝集成Spring生态系统和其他流行技术

  • 示例:Spring Data、Spring Security等

  • 好处:开发者可以利用成熟的解决方案

Spring Boot的主要作用

  1. Web应用开发:快速构建RESTful API或传统Web应用

  2. 批处理应用:简化批处理作业开发

  3. 微服务架构:作为微服务的基础框架

  4. 企业应用集成:简化与其他系统的集成

  5. 原型开发:快速验证想法和概念

Spring Boot与传统Spring应用的对比

特性Spring Boot传统Spring
配置方式自动配置+约定优于配置大量XML/Java配置
依赖管理起步依赖(starter)简化手动管理各个依赖
部署方式内嵌服务器,可执行JAR需要外部容器部署WAR
启动速度更快相对较慢
开发效率更高相对较低

典型Spring Boot应用结构

my-application/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/
│   │   │       ├── Application.java       # 主启动类
│   │   │       ├── controller/            # 控制器
│   │   │       ├── service/               # 服务层
│   │   │       ├── repository/            # 数据访问
│   │   │       └── model/                 # 实体类
│   │   └── resources/
│   │       ├── static/                    # 静态资源
│   │       ├── templates/                 # 模板文件
│   │       ├── application.properties     # 配置文件
│   │       └── application.yml           # 配置文件(YAML格式)
│   └── test/                             # 测试代码
├── pom.xml                               # Maven配置
└── target/                               # 构建输出


1. 核心注解

@SpringBootApplication

  • 用途:主启动类注解,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan

  • 用法:标注在主类上

  • 位置:应用主类

  • 示例

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. Controller相关注解    (非常重要噢)

@RestController

  • 用途:组合了@Controller和@ResponseBody,用于RESTful控制器

  • 用法:标注在控制器类上 

  • 位置:控制器类

  • 示例

@RestController
@RequestMapping("/api")
public class UserController {
    // ...
}

@RequestMapping

  • 用途:映射HTTP请求到方法

  • 用法:类或方法级别(既可以放在类上面也可以放在方法上面)

  • 位置:控制器类或方法

  • 示例

@RequestMapping(value = "/users", method = RequestMethod.GET)

@GetMapping/@PostMapping/@PutMapping/@DeleteMapping

  • 用途:特定HTTP方法的简化@RequestMapping

  • 用法:方法级别

  • 位置:控制器方法

  • 示例

@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
    // ...
}

@PathVariable

  • 用途:获取URL路径中的变量

  • 用法:方法参数

  • 位置:控制器方法参数

  • 示例

@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
    // ...
}

@RequestParam

  • 用途:获取请求参数

  • 用法:方法参数

  • 位置:控制器方法参数

  • 示例

@GetMapping("/users")
public List<User> getUsers(@RequestParam(required = false) String name) {
    // ...
}

3. 依赖注入相关

@Autowired

  • 用途:自动装配依赖

  • 用法:字段、构造方法或setter方法

  • 位置:需要注入的类成员

  • 示例

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
}

@Component

  • 用途:通用组件注解

  • 用法:类级别

  • 位置:组件类

  • 示例

@Component
public class MyComponent {
    // ...
}

@Service

  • 用途:标注服务层组件

  • 用法:类级别

  • 位置:服务类

  • 示例

@Service
public class UserService {
    // ...
}

@Repository

  • 用途:标注数据访问组件

  • 用法:类级别

  • 位置:DAO类

  • 示例

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // ...
}

4. 配置相关

@Configuration

  • 用途:定义配置类

  • 用法:类级别

  • 位置:配置类

  • 示例

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

@Bean

  • 用途:声明一个方法返回的对象作为Spring Bean

  • 用法:方法级别

  • 位置:配置类中的方法

  • 示例

@Bean
public DataSource dataSource() {
    // 创建并返回DataSource
}

@Value

  • 用途:注入属性值

  • 用法:字段或方法参数

  • 位置:需要注入值的类成员

  • 示例

@Value("${app.name}")
private String appName;

5. 数据相关

@Entity

  • 用途:标注JPA实体类

  • 用法:类级别

  • 位置:实体类

  • 示例

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    // ...
}

@Transactional

  • 用途:声明事务

  • 用法:类或方法级别

  • 位置:服务类或方法

  • 示例

@Service
@Transactional
public class UserService {
    // ...
}

6. 测试相关

@SpringBootTest

  • 用途:Spring Boot集成测试

  • 用法:类级别

  • 位置:测试类

  • 示例

@SpringBootTest
class MyApplicationTests {
    @Test
    void contextLoads() {
    }
}

7. AOP相关

@Aspect

  • 用途:定义切面类

  • 用法:类级别

  • 位置:切面类

  • 示例

@Aspect
@Component
public class LoggingAspect {
    // ...
}

@Before/@After/@Around

  • 用途:定义通知类型

  • 用法:方法级别

  • 位置:切面类中的方法

  • 示例

@Before("execution(* com.example.service.*.*(..))")
public void beforeAdvice(JoinPoint joinPoint) {
    // ...
}

以上是Spring Boot开发中最常用的注解,掌握这些注解可以满足大部分开发需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@程序员ALMJ

打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值