一、常用技术
-
自动配置(Auto-Configuration)
Spring Boot 根据类路径中的依赖自动配置应用程序。例如,引入
spring-boot-starter-web
会自动配置内嵌 Tomcat 和 Spring MVC。java@EnableAutoConfiguration // 启用自动配置
-
起步依赖(Starter Dependencies)
通过预定义的依赖集合(如
spring-boot-starter-data-jpa
)简化依赖管理,避免版本冲突。 -
内嵌服务器(Embedded Server)
默认集成 Tomcat、Jetty 或 Undertow,无需单独部署 WAR 文件。
-
Actuator 监控
提供生产级监控端点(如健康检查、性能指标),通过
spring-boot-starter-actuator
启用。
二、核心注解使用
-
@SpringBootApplication
作用 :主类注解,组合了以下三个核心注解:@Configuration
:标记类为配置类,定义 Bean。@EnableAutoConfiguration
:启用自动配置。@ComponentScan
:自动扫描当前包及其子包的组件(如@Service
、@Controller
)。
java@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
-
@Configuration 与 @Bean
@Configuration
:声明一个类为配置类,替代 XML 配置。@Bean
:在配置类中定义 Bean 实例。
java@Configuration public class AppConfig { @Bean public DataSource dataSource() { return new HikariDataSource(); } }
-
@RestController 与 @RequestMapping
@RestController
:组合@Controller
和@ResponseBody
,直接返回 JSON 数据。@RequestMapping
:映射 HTTP 请求到控制器方法。
java@RestController @RequestMapping("/api") public class UserController { @GetMapping("/users") public List<User> getUsers() { return userService.findAll(); } }
-
@Autowired 与 @Qualifier
@Autowired
:自动注入依赖,按类型匹配。@Qualifier
:指定注入的 Bean 名称,解决歧义性。
-
@Value
注入配置文件中的属性值:java@Value("${server.port}") private int port;
-
@SpringBootTest
用于集成测试,加载完整的应用程序上下文:java@SpringBootTest class MyApplicationTests { @Test void contextLoads() {} }
三、注解说明及应用
1. 核心注解
注解 | 说明 | 示例 |
---|---|---|
@SpringBootApplication |
主启动类注解,组合了 @Configuration 、@EnableAutoConfiguration 和 @ComponentScan |
标记 main 方法所在的类 |
@Configuration |
声明一个类为配置类,替代 XML 配置 | 定义 Bean 或配置类 |
@Bean |
在配置类中声明一个 Bean | @Bean public DataSource dataSource() { ... } |
@ComponentScan |
自动扫描组件(如 @Component , @Service 等) |
在启动类中指定包扫描路径 |
@EnableAutoConfiguration |
启用 Spring Boot 自动配置机制 | 通常由 @SpringBootApplication 包含 |
2. Web 开发(Spring MVC)
注解 | 说明 | 示例 |
---|---|---|
@RestController |
组合 @Controller 和 @ResponseBody ,直接返回 JSON/XML 数据 |
标记 REST API 控制器类 |
@RequestMapping |
映射 HTTP 请求路径和方法 | @RequestMapping("/api") |
@GetMapping / @PostMapping |
简化版请求映射(对应 HTTP 方法) | @GetMapping("/users") |
@RequestParam |
绑定请求参数到方法参数 | @RequestParam("name") String name |
@PathVariable |
绑定 URL 路径变量到方法参数 | @PathVariable("id") Long id |
@RequestBody |
将请求体 JSON 反序列化为对象 | @RequestBody User user |
@ResponseStatus |
设置 HTTP 响应状态码 | @ResponseStatus(HttpStatus.CREATED) |
@ExceptionHandler |
处理控制器内的异常 | @ExceptionHandler(Exception.class) |
3. 数据访问(Spring Data JPA)
注解 | 说明 | 示例 |
---|---|---|
@Entity |
声明 JPA 实体类 | 标记数据库表对应的实体类 |
@Table |
指定实体对应的数据库表名 | @Table(name = "users") |
@Id |
标记主键字段 | @Id private Long id; |
@GeneratedValue |
主键生成策略 | @GeneratedValue(strategy = GenerationType.IDENTITY) |
@Repository |
标记数据访问层(DAO)组件 | 继承 JpaRepository 的接口 |
@Transactional |
声明事务管理(方法或类级别) | @Transactional |
@Query |
自定义 JPA 查询语句 | @Query("SELECT u FROM User u WHERE u.name = ?1") |
4. 依赖注入(IoC)
注解 | 说明 | 示例 |
---|---|---|
@Autowired |
自动注入依赖(推荐使用构造器注入) | @Autowired private UserService userService; |
@Component |
通用组件注解,标记 Spring 管理的 Bean | 通用组件类 |
@Service |
标记服务层组件 | @Service public class UserService { ... } |
@Primary |
指定优先注入的 Bean | 解决多个同类型 Bean 的冲突 |
@Qualifier |
按名称注入指定 Bean | @Qualifier("userServiceImpl") |
5. 配置管理
注解 | 说明 | 示例 |
---|---|---|
@Value |
注入配置文件中的值 | @Value("${app.name}") |
@ConfigurationProperties |
将配置文件绑定到 Java 对象 | @ConfigurationProperties(prefix = "app") |
@Profile |
指定配置或 Bean 在特定环境下生效 | @Profile("dev") |
6. 安全(Spring Security)
注解 | 说明 | 示例 |
---|---|---|
@EnableWebSecurity |
启用 Web 安全配置 | 配置类继承 WebSecurityConfigurerAdapter |
@PreAuthorize |
方法执行前的权限校验 | @PreAuthorize("hasRole('ADMIN')") |
@Secured |
基于角色的访问控制 | @Secured("ROLE_USER") |
7. 高级特性
- AOP(面向切面编程)
@Aspect
: 声明切面类@Pointcut
: 定义切入点表达式@Before
/@After
/@Around
: 定义通知类型
- 缓存
@EnableCaching
: 启用缓存@Cacheable
: 缓存方法结果
- 消息队列(如 RabbitMQ)
@EnableRabbit
: 启用 RabbitMQ@RabbitListener
: 监听消息队列
- 定时任务
@EnableScheduling
: 启用定时任务@Scheduled
: 定义任务执行时间
8. 测试
注解 | 说明 | 示例 |
---|---|---|
@SpringBootTest |
启动完整 Spring 上下文进行集成测试 | 测试类注解 |
@MockBean |
模拟并替换 Spring 上下文中的 Bean | 在测试中模拟依赖 |
@Test |
JUnit 测试方法 | @Test void testMethod() { ... } |
9. Actuator 监控
- 通过
spring-boot-starter-actuator
提供端点(如/health
,/metrics
) - 常用配置项:
management.endpoints.web.exposure.include=*
10. 典型项目结构
sh
src/main/java
└── com.example.demo
├── config # 配置类(@Configuration)
├── controller # 控制器(@RestController)
├── service # 服务层(@Service)
├── repository # 数据层(@Repository)
└── model # 数据模型(@Entity)
四、其他常用技术
- Spring Data JPA :简化数据库操作,通过
@Repository
和@Entity
注解。 - Spring Security :通过
@EnableWebSecurity
配置安全策略。 - Profile 配置 :使用
@Profile
区分不同环境(如开发、生产)。