Spring Boot 内置工具类汇总与讲解

Spring Boot 提供了许多内置工具类,这些类大多继承自 Spring Framework,旨在简化常见开发任务(如配置处理、资源加载、Bean 操作等)。以下是常用的工具类及其典型应用场景:


1. 应用启动与配置工具

  • SpringApplication

    用于启动 Spring Boot 应用的核心类,支持自定义 Banner、配置文件、监听器等。

    示例:SpringApplication.run(MyApp.class, args);

  • SpringApplicationBuilder

    链式 API 构建应用,支持多环境配置、父子上下文等。

    示例:

    java 复制代码
    new SpringApplicationBuilder(MyApp.class)
        .profiles("dev")
        .run(args);
  • ApplicationArguments

    解析命令行参数,区分 --key=value 格式和非选项参数。

    示例:

    java 复制代码
    @Autowired
    private ApplicationArguments args;
    List<String> nonOptionArgs = args.getNonOptionArgs();

2. 环境配置与属性读取

  • Environment

    获取应用配置(如 application.properties 中的属性、系统变量等)。

    示例:

    java 复制代码
    @Autowired
    private Environment env;
    String port = env.getProperty("server.port");
  • @ConfigurationProperties

    将配置属性绑定到 Java 对象,支持类型安全访问。

    示例:

    java 复制代码
    @ConfigurationProperties(prefix = "myapp")
    public class MyConfig {
        private String name;
        // getter/setter
    }

3. Bean 操作工具

  • ApplicationContextAware

    获取 Spring 上下文,动态获取 Bean。

    示例:

    java 复制代码
    @Component
    public class MyBean implements ApplicationContextAware {
        private ApplicationContext context;
        @Override
        public void setApplicationContext(ApplicationContext context) {
            this.context = context;
        }
        public Object getBean(String name) {
            return context.getBean(name);
        }
    }
  • BeanUtils

    复制 Bean 属性、实例化对象等。

    示例:

    java 复制代码
    MyBean dest = new MyBean();
    BeanUtils.copyProperties(source, dest); // 同名属性复制
  • ObjectProvider

    延迟注入 Bean,避免依赖不存在时的异常。

    示例:

    java 复制代码
    @Autowired
    private ObjectProvider<MyService> myServiceProvider;
    MyService service = myServiceProvider.getIfAvailable();

4. 资源处理工具

  • ResourceUtils

    获取类路径、文件系统中的资源。

    示例:

    java 复制代码
    File file = ResourceUtils.getFile("classpath:config/file.txt");
  • FileCopyUtils

    简化文件复制和内容读写。

    示例:

    java 复制代码
    byte[] data = FileCopyUtils.copyToByteArray(new FileInputStream("test.txt"));

5. 断言与校验工具

  • Assert

    快速校验参数合法性,抛出 IllegalArgumentExceptionIllegalStateException

    示例:

    java 复制代码
    Assert.notNull(obj, "对象不能为空");
    Assert.hasText(str, "字符串必须非空");
  • ValidationUtils

    结合 Spring Validator 进行数据校验。

    示例:

    java 复制代码
    ValidationUtils.rejectIfEmpty(errors, "name", "name.empty");

6. 集合与对象工具

  • CollectionUtils

    集合判空、合并、过滤等操作。

    示例:

    java 复制代码
    if (CollectionUtils.isEmpty(list)) { ... }
  • ObjectUtils

    对象判空、默认值处理。

    示例:

    java 复制代码
    String value = ObjectUtils.defaultIfNull(str, "default");

7. SpEL 表达式工具

  • SpelExpressionParser
    解析 SpEL 表达式,动态求值。
    示例:

    java 复制代码
    ExpressionParser parser = new SpelExpressionParser();
    Expression exp = parser.parseExpression("'Hello ' + name");
    String result = exp.getValue(context, String.class);

8. AOP 工具

  • AopUtils
    判断代理类型、获取目标类等。
    示例:

    java 复制代码
    if (AopUtils.isAopProxy(bean)) { ... }

9. 事件与监听

  • ApplicationEventPublisher
    发布自定义事件。
    示例:

    java 复制代码
    @Autowired
    private ApplicationEventPublisher publisher;
    publisher.publishEvent(new MyEvent("事件内容"));

10. Web 相关工具

  • ResponseEntity

    封装 HTTP 响应,包括状态码、头信息、响应体。

    示例:

    java 复制代码
    return ResponseEntity.status(HttpStatus.OK).body("Success");
  • ServletUtils

    处理请求与响应(如获取请求参数)。

    示例:

    java 复制代码
    HttpServletRequest request = ServletUtils.getRequest();

11. 测试工具

  • TestPropertySource

    为测试类指定配置文件。

    示例:

    java 复制代码
    @TestPropertySource(locations = "classpath:test.properties")
  • MockMvc

    模拟 HTTP 请求,测试 Controller 层。

    示例:

    java 复制代码
    mockMvc.perform(get("/api/data"))
           .andExpect(status().isOk());

12. 其他工具

  • StringUtils

    字符串判空、截断、分割等(org.springframework.util 包)。

    示例:

    java 复制代码
    if (StringUtils.hasText(str)) { ... }
  • JsonUtils

    (需配合 Jackson)JSON 序列化与反序列化。

    示例:

    java 复制代码
    String json = JsonUtils.toJson(obj);
    MyObject obj = JsonUtils.fromJson(json, MyObject.class);
相关推荐
棉猴8 分钟前
《pygame中Sprite类实现多帧动画》注-通过多张序列帧显示动画2-1
python·游戏·pygame·游戏编程
权泽谦16 分钟前
用 Python 做一个天气预报桌面小程序(附源码 + 打包与部署指导)
开发语言·python·小程序
“负拾捌”26 分钟前
LangChain提示词模版 PromptTemplate
python·langchain·prompt
合作小小程序员小小店32 分钟前
web安全开发,在线%服务器日志入侵检测%系统安全开发,基于Python,flaskWeb,正则表达式检测,mysql数据库
服务器·python·安全·web安全·flask·安全威胁分析·安全架构
dreams_dream1 小时前
Django序列化器
后端·python·django
懷淰メ1 小时前
python3GUI--短视频社交软件 By:Django+PyQt5(前后端分离项目)
后端·python·django·音视频·pyqt·抖音·前后端
woshihonghonga1 小时前
【动手学深度学习】
开发语言·python
郝开1 小时前
Spring Boot 2.7.18(最终 2.x 系列版本)1 - 技术选型:连接池技术选型对比;接口文档技术选型对比
java·spring boot·spring
码界筑梦坊1 小时前
240-基于Python的医疗疾病数据可视化分析系统
开发语言·python·信息可视化·数据分析·毕业设计·echarts
有意义1 小时前
从零搭建:json-server+Bootstrap+OpenAI 全栈 AI 小项目
前端·后端·llm