首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring / Spring :在java代码中读取的属性"spring.jpa.properties.hibernate.generate_statistics“在哪里?

Spring / Spring :在java代码中读取的属性"spring.jpa.properties.hibernate.generate_statistics“在哪里?
EN

Stack Overflow用户
提问于 2022-10-29 14:46:14
回答 1查看 69关注 0票数 0

我已经浏览了通用应用特性参考页面。这包含了常用弹簧道具的列表,这些属性的值可以在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,但不能找到上面的道具。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-30 20:56:39

文档中提到这种行为如下:

将a.b=c绑定到Map将保留。并返回一个带有条目{"a.b"="c"}的Map。

JpaProperties现在被定义为

代码语言:javascript
运行
复制
@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。因此,考虑到以下属性:

代码语言:javascript
运行
复制
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.foo=bar

将使用以下条目绑定到此属性映射:

代码语言:javascript
运行
复制
key=hibernate.cache.use_query_cache, value=true
key=foo, value=bar

这个属性映射将直接输入到下面的JPA API中,以创建EntityManagerFactory

代码语言:javascript
运行
复制
EntityManagerFactory emf = Persistence.createEntityManagerFactory("somePersistenceUnit", properties) 

因此,从spring-boot的角度来看,这个属性映射的值对它是透明的。Spring引导不会关心这个属性映射中的值是否有效,因为它只是简单地将其传递给Hibernate让它处理。

因此,如果您想知道属性的所有可能值,您必须使用hibernate源代码检查,而不是使用spring引导。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74246259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档