我需要爲Spring組件自動掃描定義一個根包。package-info.java用於Spring組件掃描
我不喜歡將包名稱定義爲非類型安全字符串的方法。目前我在我的包的根目錄中添加了人工空的Scannable
標記界面,並以類型安全的方式在Spring @ComponentScan
註釋中使用它。
但是爲了同樣的目的,可以在@ComponentScan
註釋中以某種方式使用package-info.java
?
我需要爲Spring組件自動掃描定義一個根包。package-info.java用於Spring組件掃描
我不喜歡將包名稱定義爲非類型安全字符串的方法。目前我在我的包的根目錄中添加了人工空的Scannable
標記界面,並以類型安全的方式在Spring @ComponentScan
註釋中使用它。
但是爲了同樣的目的,可以在@ComponentScan
註釋中以某種方式使用package-info.java
?
Java中沒有語法可以讓你自己直接引用一個對象Package
,所以對你的問題的簡短回答是否。
您不能使用package-info.java
以確保編譯時安全的方式引用包。您只能直接引用Class
對象並通過該對象獲取其包。而且你也不能將類放入package-info.java
,因爲名爲package-info.java
的java源文件應至少包含一個名爲package-info
的類(如果有的話),但這也是不可能的,因爲1)不允許-
作爲java標識符字符; 2) package
是java中的保留關鍵字,按照Java Language Specification。
在這種情況下使用佔位符類或接口是適當的解決方案,它爲您提供在這種情況下可以實現的最大保證。