一、常用技术
-
自动配置(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 {@Beanpublic 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 {@Testvoid 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. 典型项目结构
src/main/java└── com.example.demo├── config ├── controller ├── service ├── repository └── model
四、其他常用技术
- Spring Data JPA:简化数据库操作,通过
@Repository
和@Entity
注解。 - Spring Security:通过
@EnableWebSecurity
配置安全策略。 - Profile 配置:使用
@Profile
区分不同环境(如开发、生产)。