Я просмотрел Общие свойства приложений справочную страницу. Он содержит список часто используемых пружинных реквизитов, а значения этих свойств можно определить в application.properties или application.yml.
Итак, просто чтобы изучить и выяснить соглашение о том, как и где вышеуказанные реквизиты объявляются (читаются) в java-коде, я начал искать в коде spring-data-jpa связанные свойства. Из этого ответа SOF я увидел, что spring.datasource.driverClassName недвижимость находится в org.springframework.boot.autoconfigure.jdbc.DataSourceProperties, то есть в источнике
Точно так же я хочу найти код для других свойств, таких как spring.jpa.properties.hibernate.cache.use_query_cache props и spring.jpa.properties.hibernate.generate_statistics. Я смотрел на spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm, но не мог найти ни одного.
Любые предложения высоко ценятся.
Я просто пытаюсь понять весеннюю загрузку немного глубже.
Примечание: я смог найти spring.jpa, но не указанный выше реквизит.
@ xerx593 - так где еще искать все реквизиты, которые использует конкретная реализация. Поиск обширного списка реквизитов со всеми возможными значениями кажется интересным и полезным.




Такое поведение упоминается в документах следующим образом:
Привязка a.b=c к Map<String, String> сохранит файл . в ключе и вернуть карту с записью {"a.b"="c"}
JpaProperties теперь определяется как
@ConfigurationProperties(prefix = "spring.jpa")
public class JpaProperties {
/**
* Additional native properties to set on the JPA provider.
*/
private Map<String, String> properties = new HashMap<>();
.....
}
Префикс — spring.jpa, а имя поля карты — properties. Итак, учитывая следующие свойства:
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.foo=bar
будет привязан к этой карте свойств со следующими записями:
key=hibernate.cache.use_query_cache, value=true
key=foo, value=bar
Эта карта свойств будет напрямую передана в следующий JPA API для создания EntityManagerFactory:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("somePersistenceUnit", properties)
Таким образом, с точки зрения spring-boot значения этой карты свойств прозрачны для него. Spring boot не будет заботиться о том, является ли значение в этой карте свойств допустимым или нет, поскольку он просто передает его в Hibernate, чтобы он мог его обработать.
Поэтому, если вы хотите узнать все возможные значения свойств, вам нужно свериться с исходными кодами hibernate, а не с spring-boot.
это в значительной степени отвечает на него. +1
Если вы нашли
spring.jpa, я также вижуproperties...(Map<String,String>) (это передается "jpa-провайдеру" как есть)