成人免费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獲取:

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-02-26 09:01:39

PostCSS工具CSS

2024-08-30 08:12:17

開源微信小程序

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注解項目

2018-10-18 11:02:53

AdobeiOS工具

2016-08-25 21:41:29

MarkdownHtmlWeb

2020-02-20 10:33:56

固態硬盤Windows 7軟件

2022-11-11 17:06:43

開發組件工具

2020-12-07 10:59:01

Python數據工具

2022-11-08 08:53:56

插件IDE

2019-03-07 10:51:32

DevOpsGradleGit

2020-08-18 08:15:27

WindowsLinux操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九热精 | 国产91在线视频 | 国产免费福利 | 亚洲精品9999| 亚洲国产成人在线视频 | 国产一级片一区二区 | 99爱视频| 亚洲精品高清视频在线观看 | 国产目拍亚洲精品99久久精品 | 中文一区| 亚洲黄色视屏 | 男人阁久久 | 亚洲精品一 | 久久综合九九 | 亚洲精品自拍 | 国产精品极品美女在线观看免费 | 久久综合久久久 | 91视频88av | 中文字幕一区二区三区在线观看 | 极品国产视频 | 91视频麻豆| 狠狠骚| 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 在线观看视频91 | 涩涩视频网站在线观看 | 91麻豆精品国产91久久久更新资源速度超快 | 91欧美 | 91精品在线播放 | 国产精品久久久久久吹潮 | 夜夜爽99久久国产综合精品女不卡 | 国产视频一区二区 | 国产91久久精品一区二区 | 午夜久草 | 91在线最新 | 成人日韩精品 | 成人性视频免费网站 | 欧美国产精品一区二区三区 | 国产在线不卡 | 国产女人与拘做视频免费 | 九九免费 | 91久久夜色 |