成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot這幾個工具類太有用了

開發 開發工具
如果你想將后綴為.properties,.xml,.yaml資源文件加載,那么你可以使用PropertiesPropertySourceLoader與YamlPropertySourceLoader。

環境:SpringBoot3.2.5

1. 獲取進程ID

如果你想在程序中獲取當前SpringBoot運行的進程號,那么你可以使用ApplicationPid,該類非常方便的獲取當前進程ID。

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

輸出結果:

進程ID: 24416

當然你還可以通過如下方式,獲取當前的進程號:

#在META-INF/spring.factories中注冊監聽器
org.springframework.context.ApplicationListener=\
org.springframework.boot.context.ApplicationPidFileWriter

該監聽器會將當前的進程ID寫入文件中,通過如下配置文件路徑

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

文件內容:

圖片圖片

如果你覺得無聊,那么你還可以通過如下方式:

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

這樣也可以獲取進程ID。

2. 應用運行主目錄

ApplicationHome提供訪問應用程序主目錄的途徑。嘗試為Jar文件、解壓縮文件和直接運行的應用程序選擇一個合理的主目錄。

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

在IDE中運行輸出結果:

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

打成Jar后運行輸出結果:

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

通過jar運行后,source輸出的是當前運行的jar包路徑。

3. 獲取Java版本

要想知道當前SpringBoot運行時的java版本可以通過JavaVersion獲?。?/p>

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

輸出結果:

Java Version: 17

JavaVersion是個枚舉類,定義了17~22枚舉值,你還可以調用isEqualOrNewerThan和isOlderThan進行java版本的比較。

4. 應用臨時目錄

ApplicationTemp類提供了訪問應用程序特定的臨時目錄的功能。一般來說,不同的Spring Boot應用程序將得到不同的位置,但是,只需重新啟動應用程序即可獲得相同的位置。

ApplicationTemp temp = new ApplicationTemp() ;
System.out.printf("臨時目錄: %s%n", temp.getDir()) ;

輸出結果:

臨時目錄: C:\Users\MSI-NB\AppData\Local\Temp\561929B2C764E67BCDA2DF9DAE26EF121F7E5365

不論你在IDE下還是Jar方式運行,windows平臺下臨時目錄都在這里的Temp下。

5. 系統屬性/環境變量訪問

當你需要訪問系統屬性時可以通過SystemProperties類非常方便的獲取。如果你訪問的屬性不存在時(null),那么它會再從環境變量中獲取(System#getenv)。

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

輸出結果:

java.home=D:\software\jre

注:這里的get方法參數是可變長參數,你可以傳遞多個key,獲取時遍歷遇到不為null的直接返回。

6. 實例化對象

Instantiator通過注入可用參數來實例化對象的簡單工廠。

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

注備上面幾個類,接下通過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) ;

輸出結果

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

非常方便的一次性幫助你實例化多個同類型的類。

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()) ;

通過上面2個Loader非常方便的將資源文件加載,加載后的List<PropertySource>還可以注冊到Environment中,在系統中直接訪問。

8. 獲取basePackages

如果你需要在代碼中獲取當前應用啟動類所在的基包basePackages,那么你可以通過如下方式:

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

輸出結果:

basepPckages: [com.pack]

內部注冊的是一個BasePackages Bean,該類是靜態私有的所以你沒法直接訪問,只能通過上面的方式。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2023-11-30 08:19:52

偽類CSS

2022-05-31 09:42:49

工具編輯器

2024-08-30 08:12:17

開源微信小程序

2024-02-26 09:01:39

PostCSS工具CSS

2021-09-01 11:10:55

Spring BootShellJava

2020-03-25 09:01:34

SQL建議索引

2020-01-15 15:12:38

Java8日期處理代碼

2020-02-06 11:35:58

Java 8APIJava

2022-05-20 15:27:41

React工具Vue

2023-07-28 09:50:54

Hutool工具Java

2022-11-28 10:24:10

Spring更新JVM

2024-07-03 13:03:30

Spring注解項目

2016-08-25 21:41:29

MarkdownHtmlWeb

2018-10-18 11:02:53

AdobeiOS工具

2020-02-20 10:33:56

固態硬盤Windows 7軟件

2022-11-08 08:53:56

插件IDE

2020-12-07 10:59:01

Python數據工具

2022-11-11 17:06:43

開發組件工具

2019-03-07 10:51:32

DevOpsGradleGit

2021-09-30 16:22:34

程序員工具編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产第一区二区三区 | 日韩在线一区二区三区 | 三区四区在线观看 | 91免费在线看 | 国产一区中文字幕 | 日本一区二区不卡视频 | 亚洲视频一区在线播放 | 久在线视频 | 国产精品色哟哟网站 | 一区二区免费在线视频 | 精品中文字幕久久 | 日韩在线欧美 | 久久久久久久久99 | 精品国产一区二区三区久久 | 亚洲xxxxx| 国产精品成av人在线视午夜片 | 中文字幕国产精品 | 国产精品一区一区 | 久久国产精品精品 | 国产乱人伦 | 91福利网| 手机在线一区二区三区 | 精品国产视频 | 日韩成人在线一区 | 久久精品小视频 | 精品久久久久久久久久久久久久久久久 | 天天干天天玩天天操 | 国产视频精品区 | 国产一区二区在线看 | 在线视频一区二区三区 | 亚洲天堂一区二区 | 欧美日韩中文在线 | 亚洲日韩第一页 | 一区二区三区视频在线观看 | 国产精品一区二 | 超碰97人人人人人蜜桃 | 亚洲综合无码一区二区 | 91精品国产欧美一区二区成人 | 日日日干干干 | www.久久.com| 日韩免费视频一区二区 |