SpringBoot(三)——静态资源访问、整合Json、系统启动任务
一、静态资源访问
1、默认的静态资源访问
以前 MVC 的静态资源可以在配置类里面自己配置静态资源,这里也是一样的。
可以先去查看源码,看看源码是怎么配置的:
源码留了四个静态资源位置,按照上述的位置创建好文件夹,也能使用到静态资源的。
还有就是,这里有判断,如果是 web 工程的话,还有个资源位置:
这里的斜杠 / :代表的是当前项目,其实说白了代表的是 webapp 目录,如果没有这个目录可以手动创建;创建好以后这个 app 目录下的静态资源也是默认可以访问的。
那么这几个静态资源位置的优先级是怎样的呢?
2、自定义静态资源访问(配置文件)
3、自定义静态资源访问(Java 代码)
二、整合 Json
1、整合 Jackson
相比 MVC 时候的写法,SpringBoot 的 jackson 就方便的多了。
先创建一个实体类:
然后直接实例化对象并返回:
然后框架会自动帮我们用 json 格式返回
最后看效果:
可以看到日期格式没有格式化,如果要格式化,可以这样:
a、全局配置——第一种方式
b、第二种方式
在 MVC 的时候也用过这种全局配置方法:
2、整合 Gson
因为 jackson 是默认加进来的,所以如果要加入 gson ,需要先移除 jackson 配置;如果不去,两个都加入,按照框架的机制,先找到哪个就用哪个。
移除 jackson:
加入 gson 依赖:
然后前面添加的那些全局配置可以去掉,不需要任何配置就能使用:
a、全局配置
3、整合 Fastjson
使用 fastjson 要先导入依赖,同样的,要去掉 jackson 和 gson:
接着如果直接运行的话,会报错,需要全局配置完之后才不会报错:
然后效果:
当然了,也可以像上面那样其他地方配置:
注意:这种写法仅限于 fastjson。
三、系统启动任务
1、介绍与理解
这是 SpringBoot 独有的,MVC里面所没有的。
系统启动任务就是项目启动的时候要做的事情。
以前在 Servlet 的时候,或者 MVC 的时候,想这么做的话,要靠 web 三大组件的 Listener 监听器来完成,比如:
2、SpringBoot 提供的工具
SpringBoot 中提供了两个工具来完成这种需求:
1、CommandLineRunner
2、ApplicationrRunner
3、实现 CommandLineRunner 接口
然后看输出:
这就是按照优先级执行任务。
那么既然是一开始就要执行的任务,该怎么往 args 里面传参数呢?
有两种方法:
第一种方法:
然后看效果:
但是这种方法打包之后就没用了。
第二种方法:
这种方法打包之后运行仍然有效:
在运行打包文件的指令中直接输入,看效果:
没有问题。
4、实现 ApplicationRunner 接口
基本上和 CommandLineRunner 一样,最大的区别就是这个的参数类型更加丰富:
测试:
如果是打包的情况: