什么是SpringBoot?,它有什么好处以及Spring Boot 常用注解详解。
Spring Boot 概述
什么是Spring Boot?
Spring Boot是Spring框架的一个子项目,旨在简化基于Spring的应用开发过程。它通过"约定优于配置"的原则,提供了一系列自动配置和快速开发的特性,使开发者能够快速搭建独立运行的、生产级的Spring应用程序。
Spring Boot的核心特点
-
自动配置:根据项目依赖自动配置Spring应用
-
起步依赖:简化依赖管理,提供功能化的依赖组
-
内嵌服务器:内置Tomcat、Jetty或Undertow,无需部署WAR文件
-
命令行界面:支持使用Groovy脚本快速开发
-
Actuator:提供生产就绪功能,如健康检查、指标收集等
Spring Boot的主要好处
1. 简化配置
-
作用:大幅减少XML配置和样板代码
-
示例:自动配置数据源、事务管理等
-
好处:开发者可以更专注于业务逻辑而非配置
2. 快速开发
-
作用:提供快速启动模板和开发工具
-
示例:Spring Initializr在线生成项目结构
-
好处:几分钟内即可搭建可运行的项目框架
3. 微服务友好
-
作用:天然支持微服务架构
-
示例:轻松集成Spring Cloud组件
-
好处:简化分布式系统开发
(图片来源网络,侵删)4. 生产就绪
-
作用:内置监控和管理端点
-
示例:/actuator/health端点提供健康检查
(图片来源网络,侵删) -
好处:方便运维和监控应用状态
5. 丰富的生态系统
-
作用:无缝集成Spring生态系统和其他流行技术
(图片来源网络,侵删) -
示例:Spring Data、Spring Security等
-
好处:开发者可以利用成熟的解决方案
Spring Boot的主要作用
-
Web应用开发:快速构建RESTful API或传统Web应用
-
批处理应用:简化批处理作业开发
-
微服务架构:作为微服务的基础框架
-
企业应用集成:简化与其他系统的集成
-
原型开发:快速验证想法和概念
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 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 { // ... }
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开发中最常用的注解,掌握这些注解可以满足大部分开发需求。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-