【小家Spring】Spring Framework提供的实用纯Java工具类大合集(二)(下)

简介: 【小家Spring】Spring Framework提供的实用纯Java工具类大合集(二)(下)

SpringProperties


位于org.springframework.core包。我认为他是Spring给我们提供的一个便捷处理.properties文件的好帮手。


在classpath类路径下建一个文件:spring.properties(必须是类路径下,切必须叫这个文件名)


name=fangshixiang


    public static void main(String[] args) {
        String name = SpringProperties.getProperty("name");
        System.out.println(name); //fangshixiang
    }


就这样,非常简单的,就可议读出spring.properties这个配置文件里面指定key的值。这样若我们某些参数需要外部化配置,使用这个参数可谓是非常非常的方便啊。


application.properties这个配置文件尽量防止一些主线的配置文件,而spring.properties可议放置和容器无关、我们具体业务自己需要定义的配置(比如业务开关、业务时间等等)


它的源码也非常的简单,就是它在项目启动的时候会去类路径扫描名叫spring.properties,有就加载进来,没有就算了(就算我们没有此配置文件,也可以在一个地方set进去,再去另外一个地方get出来)。它提供如下四个方法:


  public static void setProperty(String key, @Nullable String value) {
    if (value != null) {
      localProperties.setProperty(key, value);
    }
    else {
      localProperties.remove(key);
    }
  }
  @Nullable
  public static String getProperty(String key) {
    String value = localProperties.getProperty(key);
    if (value == null) {
      try {
        value = System.getProperty(key);
      }
      catch (Throwable ex) {
        if (logger.isDebugEnabled()) {
          logger.debug("Could not retrieve system property '" + key + "': " + ex);
        }
      }
    }
    return value;
  }
  // 显然这两个事专门方便我们来处理开关得~~~~
  public static void setFlag(String key) {
    localProperties.put(key, Boolean.TRUE.toString());
  }
  public static boolean getFlag(String key) {
    return Boolean.parseBoolean(getProperty(key));
  }


SpringVersion、SpringBootVersion


    public static void main(String[] args) {
        // 貌似没有SpringCloudVersion
        System.out.println(SpringVersion.getVersion()); //4.3.23.RELEASE
        System.out.println(SpringBootVersion.getVersion()); //1.5.20.RELEASE
    }


Constants:常量获取工具


在org.springframework.core包中,在处理类的常量的时候,我们可以借助它来处理~~。

它只有一个构造函数,传入一个Class,通过反射的方式获取目标source类中所有的public static final的常量放入一个Map中


常用的几个方法:通过asXX方法取出相应的值。


Demo如下:


public class Main {
    public static final int MAX_NUM = 5;
    public static final int MIN_NUM = 2;
    public static final String NAME = "fsx";
    public static final Map<String,Object> MAP = new HashMap<>();
    public static void main(String[] args) {
        Constants constants = new Constants(Main.class);
        System.out.println(constants.asNumber("MAX_NUM").intValue()); // 5
        System.out.println(constants.asString("NAME")); //fsx
        // 自动总个数
        System.out.println(constants.getSize()); //3
        //=============它的好处是提供一些批量获取的方法,在属性很多的时候  这个特别好用==============
        // 匹配前缀 批量获取 注意:此处返回的是字段名,不是值  不区分大小写  下同
        System.out.println(constants.getNames("M")); //[MIN_NUM, MAX_NUM, MAP]
        System.out.println(constants.getNames("m")); //[MIN_NUM, MAX_NUM, MAP]
        // 后缀匹配
        System.out.println(constants.getNamesForSuffix("NUM")); //[MIN_NUM, MAX_NUM]
        // 拿到所有的值  前缀匹配
        System.out.println(constants.getValues("M")); //[{}, 2, 5]
        // 后缀匹配
        System.out.println(constants.getValuesForSuffix("E")); //[fsx]
    }
}



注意:常量必须是 public static final 修饰的,否则使用asXX方法取出的时候抛exception


ObjectUtils


ObjectUtils工具类会尝试优雅的处理null输入,对于空输入通常不会抛出异常,每个方法都更详细的记录其行为。

另外它提供的方法:addObjectToArray()、toObjectArray()、isArray()、arrayEquals()对处理数组都特别的好用


CollectionUtils(spring-core包的)


CollectionUtils在真实项目中,是一个非常好用的工具类。


image.png


Apache commons collection4包下的CollectionUtils也很强大,可以结合来使用。

当然还有它的ListUtils、SetUtils、MapUtils等等都非常好用

参考:【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)


未完,待续。。。

总结


本篇探讨了AOP的编程思想、过程,其主要思想是让开发者把诸多业务流程中的通用功能抽取出来,单独编写功能代码,形成独立的模块,这些模块也被称为切面。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把切面切入到流程的合适位置


相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
93 2
|
4天前
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
41 15
|
1天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
66 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
254 12
基于开源框架Spring AI Alibaba快速构建Java应用
|
3月前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
3月前
|
JSON Java Maven
实现Java Spring Boot FCM推送教程
本指南介绍了如何在Spring Boot项目中集成Firebase云消息服务(FCM),包括创建项目、添加依赖、配置服务账户密钥、编写推送服务类以及发送消息等步骤,帮助开发者快速实现推送通知功能。
145 2
|
2月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
57 0
|
2月前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
49 0
|
4天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
41 17
下一篇
开通oss服务