• ABC
    2019-04-03
    1. Spring Boot SQL初始化



    1.1 data.sql的加载


    通过org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker(实现ApplicationEvent接口)注册事件,在applicationContext注册时会回调注册的事件(DataSourceInitializerInvoker的onApplicationEvent),来触发初始化data.sql.


    通过org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer该类(createSchema方法用于执行schema.sql文件,initSchema()方法用于执行data.sql文件),查找SQL文件,并执行.


    1.2 schema.sql的加载


    在(spring-beans.*.jar)

    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory的:

    invokeInitMethods方法中此时已经初始化完成了Bean,在此方法中回调org.springframework.beans.factory.InitializingBean接口(实际调用:org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker类)的afterPropertiesSet方法,


    在DataSourceInitializerInvoker类的afterPropertiesSet方法中调用了org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer类的createSchema()方法,以执行schema.sql文件.

    展开
    
     2
  • 王刚
    2019-05-20
    老师~我有一个地方不太明白~
    @Configuration
    @ConditionalOnClass(GreetingApplicationRunner2.class)
    public class GreetingAutoConfiguration2 {
        @Bean("GreetingApplicationRunner2")
        @ConditionalOnMissingBean(GreetingApplicationRunner2.class)
        public GreetingApplicationRunner2 greetingApplicationRunner() {
            return new GreetingApplicationRunner2();
        }
    }

    我没在spring.factories 里面加入GreetingAutoConfiguration2 发现也可以自动创建,那么我想问什么时候在spring.factories加入类,以及不加的区别是什么呢?
    展开

    作者回复: 那是因为你的package正好在这个工程的扫描范围内吧,所以没有写在spring.factories里也被加载到了。你可以换个package试试,就能看到区别了。

    
     1
  • 怕什么,抱紧我
    2020-01-22
    感觉要看得懂很多注解啊,不然白瞎,例如我就没懂

    作者回复: Spring的常用注解就那么一些,了解后就会觉得其实也不多

    
    
  • 不能如期而至
    2019-09-11
    H2数据库自动配置,如果pom文件中没有添加依赖,就没有对应的ClassLoader,也就不会初始化。那有关pom文件的相关初始化,在哪个配置类中可以找到?

    作者回复: pom文件是自己写的啊,这个Spring Boot可不会帮你写,只能说在新建项目时用start.spring.io帮你初始化一个。

    
    
  • KAGEMUSHA
    2019-06-16
    网上这个部分总结云里雾里的。五花八门各抒己见,看了您这个版本思路清晰的收获不错
    
    
  • Dangelo
    2019-05-15
    请问下,@ConditionalOnMissingBean跟bean的加载顺序有关吗?

    作者回复: 有关系的,可以看看这个注解的注释,里面有提到这点的。

    
    
  • Yuuuuu
    2019-04-24
    配置注解的解析优先级是怎样的?
    比如
    @componentscan
    @configuration
    @enblexx
    ...
    是先通过componentscan加载自己定义的bean还是先enablexxx
    多个enblexxx的优先级又是怎样的?
    展开

    作者回复: 首先,你得是一个@Configuration的配置类,然后Spring才会去把你作为Java Config看待,才有后面的事。在@ComponentScan被读到前,这个Config类本身要先被找到。@EnableXXX和@ComponentScan没啥关系。

    
    
  • WL
    2019-04-10
    请问一下老师在@EnableAutoConfiguration中为什么AutoConfigurationImportSelector这个配置要用@Import的方式引入这个bean而不是通过在AutoConfigurationImportSelector上加@Configuration的方式,?
    
    
  • WL
    2019-04-07
    请问一下老师在将DataSourceAutoConfiguration这个类的源码时, 视频中说在classpath上有DataSource或者EmbeddedDatabaseType这个类时, DataSourceAutoConfigurationtion这个自动配置类才会生效, 请问一下老师这个classpath具体指什么, 没有在datasource-demo找到datasource是怎么配置的
    
    
我们在线,来聊聊吧