springboot:
进阶知识
- 异常处理
全局异常处理:使用 @ControllerAdvice + @ExceptionHandler。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntityhandleException(Exception e) {
return ResponseEntity.status(500).body("Error: " + e.getMessage());
}
} - 缓存(Spring Cache)
添加 spring-boot-starter-cache。
使用 @Cacheable、@CacheEvict 注解方法。
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) { ... }
3. 消息队列(如 RabbitMQ)
添加 spring-boot-starter-amqp。
使用 @RabbitListener 监听队列:
@RabbitListener(queues = "myQueue")
public void processMessage(String message) { ... }
4. 定时任务
启用定时任务:@EnableScheduling。
使用 @Scheduled 注解方法:
@Scheduled(fixedRate = 5000) // 每5秒执行一次
public void reportStatus() { ... }
五、调试与优化
日志管理
默认使用 SLF4J + Logback,通过 logback-spring.xml 配置。
性能监控
使用 Actuator 的 /actuator/metrics 端点查看指标。
整合 Prometheus + Grafana 实现可视化监控。
热部署(DevTools)
快速重启应用(无需手动重启)。
Docker 部署
编写 Dockerfile 容器化应用:
FROM openjdk:11
COPY target/demo.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
六、常见问题与解决
Bean 冲突
使用 @Primary 或 @Qualifier 指定优先注入的 Bean。
循环依赖
重构代码,使用 @Lazy 延迟加载。
配置文件优先级
优先级顺序:命令行参数 > 外部配置文件 > 内部配置文件。
跨域问题(CORS)
配置 @CrossOrigin 注解或全局 CORS 过滤器