【问题标题】:Spring Data JPA - slow creating beans for repositoriesSpring Data JPA - 为存储库创建 bean 缓慢
【发布时间】:2016-10-05 13:19:43
【问题描述】:

历史

在我的项目中,我有大约 50 个 JpaRepositories。它们中的大多数都在主要的 Web 应用程序 WAR 中。一些在 6 个外部 JAR 中,这些 JAR 被编译到主 WAR 中。我的应用服务器是 Wildfly 8.2.0 Final。我今天在日志中发现从 JPA 存储库创建 Spring bean 需要在我的机器上 20 秒。我有一个不太旧的 i5 和一个 SSD。我有 Spring 4.2 和 Spring Data JPA 1.9.4。

问题

这太长了。 任何人都知道如何加快 Spring Data JPA 存储库的 bean 创建或寻找哪些错误?

其他信息

我将 Spring Data JPA 配置如下:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"pl.company"}, entityManagerFactoryRef = "myEmf")
@ComponentScan(basePackages = {"pl.company"})
public class PersistenceJPAConfig { 

以下是 Wildfly 8.2.0 的日志:

https://gist.github.com/anonymous/540c79a4e8456a28aa52a2ea640553b0

需要很长时间的重复片段:

14:30:13,930 DEBUG [org.springframework.core.env.StandardEnvironment] (MSC service thread 1-3) Adding [systemProperties] PropertySource with lowest search precedence
14:30:13,930 DEBUG [org.springframework.core.env.StandardEnvironment] (MSC service thread 1-3) Adding [systemEnvironment] PropertySource with lowest search precedence
14:30:13,930 DEBUG [org.springframework.core.env.StandardEnvironment] (MSC service thread 1-3) Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
14:30:13,930 DEBUG [org.springframework.core.io.support.PathMatchingResourcePatternResolver] (MSC service thread 1-3) Resolved classpath location [pl/company/] to resources [URL [vfs:/C:/Java/wildfly-8.2.0.Final/bin/content/BDOS.war/WEB-INF/classes/pl/company/], URL [vfs:/C:/Java/wildfly-8.2.0.Final/bin/content/BDOS.war/WEB-INF/lib/energetyka-coretypes-1.1.2-umarsz.jar/pl/company/], URL [vfs:/C:/Java/wildfly-8.2.0.Final/bin/content/BDOS.war/WEB-INF/lib/energetyka-wicket-components-1.0.4-umarsz-SNAPSHOT.jar/pl/company/], URL [vfs:/C:/Java/wildfly-8.2.0.Final/bin/content/BDOS.war/WEB-INF/lib/licensing-1.0.8.jar/pl/company/], URL [vfs:/C:/Java/wildfly-8.2.0.Final/bin/content/BDOS.war/WEB-INF/lib/reports-1.0.7-SNAPSHOT.jar/pl/company/], URL [vfs:/C:/Java/wildfly-8.2.0.Final/bin/content/BDOS.war/WEB-INF/lib/system-parameters-1.2.1.jar/pl/company/], URL [vfs:/C:/Java/wildfly-8.2.0.Final/bin/content/BDOS.war/WEB-INF/lib/wicketWebComponents-1.0-SNAPSHOT.jar/pl/company/]]
14:30:14,295 DEBUG [org.springframework.core.io.support.PathMatchingResourcePatternResolver] (MSC service thread 1-3) Resolved location pattern [classpath*:pl/company/**/*GokCommunity2016Table4RepositoryImpl.class] to resources []
14:30:14,296 DEBUG [org.springframework.data.repository.config.RepositoryConfigurationDelegate] (MSC service thread 1-3) Spring Data JPA - Registering repository: gokCommunity2016Table4Repository - Interface: pl.company.zaprogs.web.statements.repository.gok2016.communityStatement.GokCommunity2016Table4Repository - Factory: org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean

【问题讨论】:

  • 组件扫描可能需要一些时间来发现和初始化 bean。是否可以加快初始化过程取决于全部 Java 类中有多少百分比是 Spring 管理的 bean。如果它们中的大多数是通过 Spring 管理的,那么您不应该期望通过任何可能的技术获得太多改进。否则,您可以摆脱组件扫描并手动实例化您的 bean。将您链接到另一个讨论这两种技术的帖子。

标签: java spring spring-data spring-data-jpa wildfly


【解决方案1】:

通过将 Spring Data JPA 从 1.9.4 升级到 1.11.10 解决了这个问题。这个特定部分现在在 3 秒内执行,而不是 52 秒。

【讨论】:

    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 2012-04-12
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2017-11-22
    相关资源
    最近更新 更多