? ? ? ?在配置additional-spring-configuration-metadata.json
文件后,在開發人員的IDE工具使用個人編寫的配置讀取很有效的在application.properties
或application.yml
文件下完成提示。
? ? ? 配置元數據文件位于jar下面。 META-INF/spring-configuration-metadata.json
它們使用簡單的JSON格式,其中的項目分類在“groups”或“properties”下,其他值提示分類在“hints”下。
"groups": [{"name": "server","type": "org.springframework.boot.autoconfigure.web.ServerProperties","sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"}...
],"properties": [{"name": "server.port","type": "java.lang.Integer","sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"}...
],"hints": [{"name": "spring.jpa.hibernate.ddl-auto","values": [{"value": "none","description": "Disable DDL handling."},{"value": "validate","description": "Validate the schema, make no changes to the database."}]}
]}
properties
表格進行配置上的含義:
名稱 | 類型 | 目的 |
name | String | 屬性的全名。名稱采用小寫的周期分隔形式(例如server.address)。此屬性是強制性的。 |
type?? ? ? | String | ?屬性的數據類型的完整簽名(例如java.lang.String),但也是完整的泛型類型(例如java.util.Map )。您可以使用此屬性來指導用戶可以輸入的值的類型。為了保持一致性,通過使用其包裝對應項(例如,boolean變為java.lang.Boolean)來指定基元的類型。請注意,此類可能是一個復雜類型,它從Stringas綁定的值轉換而來。如果類型未知,則可以省略。 |
description | String | 可以向用戶顯示的組的簡短描述。如果沒有可用的描述,則可以省略。建議描述為簡短段落,第一行提供簡明摘要。描述中的最后一行應以句點(.)結尾。 |
sourceType | String | 貢獻此屬性的源的類名稱。例如,如果屬性來自帶注釋的類@ConfigurationProperties,則此屬性將包含該類的完全限定名稱。如果源類型未知,則可以省略。 |
defaultValue | Object | 默認值,如果未指定屬性,則使用該值。如果屬性的類型是數組,則它可以是值數組。如果默認值未知,則可以省略。 |
groups組比properties多了一個屬性?sourceMethod
sourceMethod | String | 獲取對象的方法的全名(包括括號和參數類型)(例如,@ConfigurationProperties注釋的@Bean方法的名稱)。如果源方法未知,則可以省略。 |
?案例:自定義實現mongodb信息的加載
定義配置類,使用@Component和@ConfigurationProperties注解
@Component
@Getter
@Setter
@ToString
@ConfigurationProperties(prefix = "zhong.data.mongodb")
public class MongoDbProperties {//數據庫名稱private String database;//用戶名private String username;//密碼private String password;//地址 host:portprivate String address;//設置你的認證數據庫,如果有的話private String authenticationDatabase;private MongoDbFactoryProperties mongoDbFactoryProperties;@Beanpublic MongoDbFactoryProperties getMongoDbFactory(@Autowired MongoDbFactoryProperties mongoDbFactoryProperties){return this.mongoDbFactoryProperties = mongoDbFactoryProperties;}
}
additional-spring-configuration-metadata.json的內容如下:
{"groups": [{"name": "zhong.data.mongodb.database","type": "java.lang.String","description": "mongodb的數據庫名稱","sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties"},{"name": "zhong.data.mongodb.mongoDbFactoryProperties","type": "com.zhong.springdemo.mangodbdome.configure.MongoDbFactoryProperties","description": "線程池配置信息","sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties","sourceMethod": "getMongoDbFactory()"}],"properties": [{"name": "zhong.data.mongodb.username","type": "java.lang.String","description": "mongodb的用戶名","sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties","defaultValue": ""},{"name": "zhong.data.mongodb.password","type": "java.lang.String","description": "mongodb的密碼","sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties","defaultValue": "123456"},{"name": "zhong.data.mongodb.address","type": "java.lang.String","description": "mongodb的用戶名地址","sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties","defaultValue": "127.0.0.1:27017"}],"hints": []
}
這樣我們在application.proerties或application.yaml時使用了。
? ? ? ?需要注意的是,如果需要將我們自定義的設置加載容器中,則需要保證在程序啟動時能掃描到指定的jar包路徑。
方法是:在@SpringBootApplication注解中配置scanBasePackages
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MongoAutoConfiguration.class,MongoDataAutoConfiguration.class}, scanBasePackages = {"com.zhong.springdemo.mangodbdome"})
@EnableSwagger2Doc
public class WebDemoApplication {public static void main(String[] args){SpringApplication.run(WebDemoApplication.class, args);}
}
參考:
Appendix?B.?Configuration Metadata
springboot之additional-spring-configuration-metadata.json自定義提示 - Purgeyao - 博客園