造一个方形轮子文章目录:造一个方形的轮子
01、引入容器依赖
先创建一个maven项目square,然后想一下,如果要自己造一下轮子那么第一步添加的功能是什么呢?
我的第一反应就是要像Springboot一样,单jar包启动,不用在打包单独部署到tomcat里了。
那么就需要为这个方形的轮子嵌入一个Web运行容器,就用现成的tomcat-embed就可以了
添加pom.xml引用:
1 | <properties> |
02、创建启动类
然后创建一个我们的应用启动类:
SquareApplication.java:
1 | public class SquareApplication { |
03、添加测试类
这个类的的静态方法run()
就是后边提供给引用框架的项目使用的,我们先创建一个测试类,启动一下试试
T.java
1 | public class T { |
运行结果:
1 | 信息: Starting ProtocolHandler ["http-nio-8080"] |
日志输出已经启动成功了,现在访问一下http://localhost:8080
04、添加启动参数设置
OK,接下来我们改造一下,把参数解析加一下,项目启动时添加的参数--server.port:8089
要对应到我们的tomcat容器启动的端口,添加一个参数解析工具:
ArgsToKVUtil.java
1 | public class ArgsToKVUtil { |
逻辑很简单,只是把程序启动的参数数组args给解析成键值对的形式,在SquareApplication.java里添加设置参数方法setArgs()
,然后在run()
方法里先调用一下,下边是完整代码:
SquareApplication.java
1 | public class SquareApplication { |
T.main()方法添加启动参数--server.port=8089
再次运行T.main() 查看日志输出:
1 | 信息: Starting ProtocolHandler ["http-nio-8089"] |
可以看到设置的参数已经生效了。
05、添加banner
好的,容器已经基本嵌入进来了,该有的差不多也有了,已经实现了足够的简陋,注意我造轮子的目的,不忘初心(方能翻车)。
我觉得springboot的启动banner很不错,我打算学(抄)习(袭)一下。
首先在resources目录下创建default-banner.txt
文件,写入banner内容
default-banner.txt:
1 | __________ ____ |
在SquareApplication.java中添加输出banner方法:
1 | /** |
在run()
方法中添加输出引用:
1 | public static void run(Class clzz, String[] args) { |
最后我们来运行一下T.main()
查看输出:
1 | 13:02:45.086 [main] INFO com.jisuye.core.SquareApplication - |
添加完成!
06、翻车现场
上边的代码写完的时候我还没有意识到自己的问题,直到做在回家的车上才想起来,这么干得翻车啊。
把web目录设置在classes的上一级,也就是说classes是可以通过连接地址请求到的(像静态资源一样),试了一下果然是这样。这个问题下一篇再解决吧……
本篇代码地址: https://github.com/iuv/square
本文链接: http://blog.jisuye.com/2019/06/20/square1/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!