Java:Spring Boot 中SQL自动初始化的步骤

版本:

  1. Spring FrameWork 5.1.4
  2. Spring Boot 2.1.2

java标志
image-2740

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文件.

Java:Spring Framework中自带类的加载

环境

  • Spring Boot版本: 2.1.4.RELEASE
  • Spring Framework版本: 5.1.6.RELEASE

java

1. 加载类和方法说明

所有Spring框架自带的类,均通过下面的方法加载:

所在类:

AbstractAutowireCapableBeanFactory.java:550

所属方法:

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean

2. 使用的Maven的pom.xml文件

3. 使用的IDEA调试参数截图:

idea调试Spring Boot截图
image-2712

Java:Spring Bean注入点

1. 实现org.springframework.beans.factory.InitializingBean接口,可以注册bean.

java

1.1 实现org.springframework.beans.factory.DisposableBean接口,可以在bean销毁前执行某些操作.

2. 实现ApplicationContextAware 或者 BeanNameAware 接口.

3. 其他Ware接口

Spring 其他Ware接口

Java:使用Spring Mail发送邮件

发送邮件

本项目源码在:https://coding.net/u/pruidong/p/SpringEmailDemo/git

之前简单使用过Java Email发送邮件,但最近接触了Spring Mail组件之后,发现在之前的基础上更加方便了.本文的内容参照了:Spring Mail官方文档,以及Thymeleaf官方示例.但对部分内容进行了修改和优化,也使得发送邮件变得更加简单.

有两点需要说明的是:

  1. 本文不会贴完所有的资源,可以前往[项目地址]获取所有源码;
  2. 项目基于Maven构建,并且不需要Spring Web MVC(也就是不需要在Tomcat中运行),配置相关邮箱信息之后,直接在控制台运行即可
Spring Mail发送邮件项目结构图
Spring Mail发送邮件项目结构图

部分源码

直接使用下面的源码无法构建出完整项目,因为有部分图片、模板文件(HTML,txt)未贴出,贴出下面的代码,仅作为参考依据.完整源码可以访问项目地址

Maven依赖文件(pom.xml):

java标志

配置邮箱地址、邮箱服务器信息(base.properties):

Spring的配置文件(AppInitial.java):

发送纯文本邮件(未使用模板,SendTextEmail.java):

发送带附件的邮件(SendFileEmail.java):

使用Thymeleaf发送模板邮件(参照了Thymeleaf官方示例,有部分改动):

运行测试类(Main.java):

到此.

Java:Spring MVC上传文件实战

一直很麻烦

说实话,Java的上传文件,还是稍微有点麻烦,要自己集成很多东西.在这一点上,我发现我更喜欢Flask的文件上传,寥寥几行就可以搞定文件上传.

看个Flask官方的例子:

搞定,关于Flask还有很多美好的传说..有意,请自行探索.

从一而终,看Java文件上传

在这里,我使用了Ajax上传文件.(不刷新页面,可以让你有更大的想象空间)

特诊如下:

  1. 使用了jquery.js,jquery.form.js,layer.js;
  2. 使用Ajax进行文件上传;
  3. 推荐使用iframe的方式进行调用,上传成功之后,ID会放进一个隐藏域.

大概特征如上,下面……兴奋的看源码吧.

java
image-2464

源码有点多…

第一个文件:前台upload.jsp

第二个文件:后台Controller.java

第三个文件:后台-文件实体Document.java

第四个文件:后台-字符串工具类

第五个文件:后台-日期工具类

第六个文件:后台-ID生成工具类

第七个文件:后台-上传处理Service

第八个文件:后台-【文件上传处理类】【核心】

看完着实不易…到此.