SpringBoot这几个工具类太好用了收藏!!!

环境:SpringBoot3.2.5

1. 获取进程ID

如果你想在程序中获取当前SpringBoot运行的进程号,那么你可以使用ApplicationPid,该类非常方便的获取当前进程ID。

ApplicationPid pid = new ApplicationPid() ;
System.out.printf("进程ID: %s%n", pid.toString()) ;
1.2.

输出结果:

进程ID: 24416
1.

当然你还可以通过如下方式,获取当前的进程号:

#在META-INF/spring.factories中注册监听器
org.springframework.context.ApplicationListener=\
org.springframework.boot.context.ApplicationPidFileWriter
1.2.3.

该监听器会将当前的进程ID写入文件中,通过如下配置文件路径

spring:
  pid:
    file: d:/app.pid
1.2.3.

如果你觉得无聊,那么你还可以通过如下方式:

String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0]
1.

这样也可以获取进程ID。

2. 应用运行主目录

ApplicationHome提供访问应用程序主目录的途径。尝试为Jar文件、解压缩文件和直接运行的应用程序选择一个合理的主目录。

ApplicationHome home = new ApplicationHome() ;
System.out.printf("dir: %s, source: %s%n", home.getDir(), home.getSource()) ;
1.2.

在IDE中运行输出结果:

dir: D:\java\workspace\test-app, source: null
1.

打成Jar后运行输出结果:

dir: D:\java\workspace\test-app\target, 
  source: D:\java\workspace\test-app\target\test-app-1.0.0.jar
1.2.

通过jar运行后,source输出的是当前运行的jar包路径。

3. 获取Java版本

要想知道当前SpringBoot运行时的java版本可以通过JavaVersion获取:

System.out.printf("Java Version: %s%n", JavaVersion.getJavaVersion()) ;
1.

输出结果:

Java Version: 17
1.

JavaVersion是个枚举类,定义了17~22枚举值,你还可以调用isEqualOrNewerThan和isOlderThan进行java版本的比较。

4. 应用临时目录

ApplicationTemp类提供了访问应用程序特定的临时目录的功能。一般来说,不同的Spring Boot应用程序将得到不同的位置,但是,只需重新启动应用程序即可获得相同的位置。

ApplicationTemp temp = new ApplicationTemp() ;
System.out.printf("临时目录: %s%n", temp.getDir()) ;
1.2.

输出结果:

临时目录: C:\Users\MSI-NB\AppData\Local\Temp\561929B2C764E67BCDA2DF9DAE26EF121F7E5365
1.

不论你在IDE下还是Jar方式运行,windows平台下临时目录都在这里的Temp下。

5. 系统属性/环境变量访问

当你需要访问系统属性时可以通过SystemProperties类非常方便的获取。如果你访问的属性不存在时(null),那么它会再从环境变量中获取(System#getenv)。

System.out.printf("java.home=%s%n", SystemProperties.get("java.home")) ;
1.

输出结果:

java.home=D:\software\jre
1.

注:这里的get方法参数是可变长参数,你可以传递多个key,获取时遍历遇到不为null的直接返回。

6. 实例化对象

Instantiator通过注入可用参数来实例化对象的简单工厂。

public interface DAO {}
public class A implements DAO {}  
public class B implements DAO {}
1.2.3.

注备上面几个类,接下通过Instantiator一次性实例化多个对象。

Instantiator<DAO> instant = new Instantiator<>(DAO.class, p -> {}) ;
List<DAO> ret = instant.instantiate(List.of("com.pack.A", "com.pack.B")) ;
System.out.printf("%s%n", ret) ;
1.2.3.

输出结果

[com.pack.A@3127cb44, com.pack.B@3234474]
1.

非常方便的一次性帮助你实例化多个同类型的类。

7. 资源加载

如果你想将后缀为.properties,.xml,.yaml资源文件加载,那么你可以使用PropertiesPropertySourceLoader与YamlPropertySourceLoader。

// 加载properties文件
PropertiesPropertySourceLoader propertyLoader = new PropertiesPropertySourceLoader() ;
List<PropertySource<?>> list = propertyLoader.load("pack", new ClassPathResource("pack.properties")) ;
System.out.printf("pack.*: %s%n", list.get(0).getSource()) ;
// 加载yaml文件
YamlPropertySourceLoader yamlLoader = new YamlPropertySourceLoader() ;
List<PropertySource<?>> yamls = yamlLoader.load("pack", new ClassPathResource("pack.yml")) ;
System.out.printf("pack.*: %s%n", yamls.get(0).getSource()) ;
1.2.3.4.5.6.7.8.

通过上面2个Loader非常方便的将资源文件加载,加载后的List还可以注册到Environment中,在系统中直接访问。

8. 获取basePackages

如果你需要在代码中获取当前应用启动类所在的基包basePackages,那么你可以通过如下方式:

private ConfigurableApplicationContext context ;
System.out.printf("basepPckages: %s%n", AutoConfigurationPackages.get(context)) ;
1.2.

输出结果:

basepPckages: [com.pack]
1.

内部注册的是一个BasePackages Bean,该类是静态私有的所以你没法直接访问,只能通过上面的方式。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot项目中使用MyBatis访问StarRocks数据库,需要做以下几个步骤: 1. 添加StarRocks JDBC驱动包到项目依赖中: ```xml <dependency> <groupId>com.starrocks</groupId> <artifactId>starrocks-jdbc</artifactId> <version>0.10.0</version> </dependency> ``` 2. 在Spring Boot的配置文件中配置StarRocks连接信息: ```properties spring.datasource.url=jdbc:starrocks://localhost:9030/testdb spring.datasource.username=root spring.datasource.password= spring.datasource.driver-class-name=com.starrocks.jdbc.Driver ``` 3. 添加MyBatis和MyBatis-Spring的依赖: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 4. 创建Mapper接口和Mapper XML文件 创建Mapper接口,定义需要访问的SQL语句,例如: ```java public interface Table1Mapper { @Select("SELECT COUNT(*) FROM table1") int getCount(); } ``` 创建Mapper XML文件,定义SQL语句的具体实现,例如: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.Table1Mapper"> <select id="getCount" resultType="int"> SELECT COUNT(*) FROM table1 </select> </mapper> ``` 5. 在Spring Boot的配置文件中配置MyBatis ```properties mybatis.mapper-locations=classpath:mapper/*.xml ``` 6. 在Spring Boot应用程序中使用Mapper 使用@Autowired注入Mapper,并使用Mapper访问StarRocks数据库,例如: ```java @Autowired private Table1Mapper table1Mapper; public void query() { int count = table1Mapper.getCount(); System.out.println("Table1 count: " + count); } ``` 以上就是在Spring Boot项目中使用MyBatis访问StarRocks数据库的步骤,通过这种方式,我们可以方便地使用MyBatis来访问StarRocks数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值