自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SpringBoot這幾個工具類太有用了

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

環(huán)境:SpringBoot3.2.5

1. 獲取進(jìn)程ID

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

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

輸出結(jié)果:

進(jìn)程ID: 24416

當(dāng)然你還可以通過如下方式,獲取當(dāng)前的進(jìn)程號:

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

該監(jiān)聽器會將當(dāng)前的進(jìn)程ID寫入文件中,通過如下配置文件路徑

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

文件內(nèi)容:

圖片圖片

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

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

這樣也可以獲取進(jìn)程ID。

2. 應(yīng)用運行主目錄

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

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

在IDE中運行輸出結(jié)果:

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

打成Jar后運行輸出結(jié)果:

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

通過jar運行后,source輸出的是當(dāng)前運行的jar包路徑。

3. 獲取Java版本

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

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

輸出結(jié)果:

Java Version: 17

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

4. 應(yīng)用臨時目錄

ApplicationTemp類提供了訪問應(yīng)用程序特定的臨時目錄的功能。一般來說,不同的Spring Boot應(yīng)用程序?qū)⒌玫讲煌奈恢?,但是,只需重新啟動?yīng)用程序即可獲得相同的位置。

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

輸出結(jié)果:

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

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

5. 系統(tǒng)屬性/環(huán)境變量訪問

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

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

輸出結(jié)果:

java.home=D:\software\jre

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

6. 實例化對象

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

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

輸出結(jié)果

[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中,在系統(tǒng)中直接訪問。

8. 獲取basePackages

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

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

輸出結(jié)果:

basepPckages: [com.pack]

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

責(zé)任編輯:武曉燕 來源: Spring全家桶實戰(zhàn)案例源碼
相關(guān)推薦

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-02-06 11:35:58

Java 8APIJava

2020-01-15 15:12:38

Java8日期處理代碼

2023-07-28 09:50:54

Hutool工具Java

2022-05-20 15:27:41

React工具Vue

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

固態(tài)硬盤Windows 7軟件

2020-12-07 10:59:01

Python數(shù)據(jù)工具

2022-11-11 17:06:43

開發(fā)組件工具

2022-11-08 08:53:56

插件IDE

2019-03-07 10:51:32

DevOpsGradleGit

2020-08-18 08:15:27

WindowsLinux操作系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號