简体   繁体   English

什么Spring class负责执行schema.sql?

[英]What Spring class is responsible for executing schema.sql?

I am making my own ORM and I'm at the point where I need to push the SQL code I've generated from my entity classes to the database.我正在制作自己的 ORM 并且我需要将我从实体类生成的 SQL 代码推送到数据库。 I do not aim to copy how Spring does it but rather see what phase of the lifecycle it runs in and how exactly.我的目的不是复制 Spring 是如何做到的,而是看看它运行在生命周期的哪个阶段以及如何准确。

Thanks谢谢

The actual class that read schema.sql and execute it is DataSourceInitializer#createSchema() .读取schema.sql并执行它的实际 class 是DataSourceInitializer#createSchema()

Here are the high level flow which somehow triggers it:这是以某种方式触发它的高级流程:

  1. If DataSource class is found from the class-path, spring-boot auto-configuration will enable DataSourceAutoConfiguration如果从类路径中找到DataSource class,则 spring-boot 自动配置将启用DataSourceAutoConfiguration
  2. DataSourceAutoConfiguration imports DataSourceInitializationConfiguration DataSourceAutoConfiguration导入DataSourceInitializationConfiguration
  3. DataSourceInitializationConfiguration registers DataSourceInitializerPostProcessor which will be executed and force initialising DataSourceInitializerInvoker . DataSourceInitializationConfiguration注册DataSourceInitializerPostProcessor将被执行并强制初始化DataSourceInitializerInvoker
  4. DataSourceInitializerInvoker 's afterPropertiesSet will then execute DataSourceInitializer#createSchema() to read and execute schema.sql然后DataSourceInitializerInvokerafterPropertiesSet将执行DataSourceInitializer#createSchema()以读取并执行schema.sql

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM