我已经浏览了通用应用特性参考页面。这包含了常用弹簧道具的列表,这些属性的值可以在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道具和spring.jpa.properties.hibernate.generate_statistics。我看了看spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm,但找不到。
任何建议都是非常感谢的。
我只是想更深入地理解弹簧靴。
注意:我可以找到spring.jpa,但不能找到上面的道具。
发布于 2022-10-30 20:56:39
文档中提到这种行为如下:
将a.b=c绑定到Map将保留。并返回一个带有条目{"a.b"="c"}的Map。
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引导不会关心这个属性映射中的值是否有效,因为它只是简单地将其传递给Hibernate让它处理。
因此,如果您想知道属性的所有可能值,您必须使用hibernate源代码检查,而不是使用spring引导。
https://stackoverflow.com/questions/74246259
复制相似问题