用spring boot完成一个小项目的心酸历程

整个项目是用spring boot+mybatis+jsp构成的

首先来吐槽一下整个项目中的坑点

1.maven的包管理和依赖管理

2.spring boot真的抛弃jsp了吗?

3.打包方式用jar还是war?

4.tomcat是用内置还是外置?

5.本地开发环境和发布到生产环境有什么不同?

现在我就带着问题一个一个的回答

1.maven的包管理和依赖管理

在这个项目,经常出现某个类找不到的情况,但是在引用的那个jar包里面确实存在,那就很可能是包依赖的版本有问题,比如我们引入了一个包A,版本为1.1,然后有另一个包B依赖了包A,但是依赖的版本的为1.0,这时有可能我们在工程中用到的就是包A的1.0版本,首先我们用mvn dependency:tree来找出所有包的依赖关系,看是哪个类依赖了某个类的低版本,然后在pom里面那个类下把依赖的类给排除掉,例如

<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-cas</artifactId>
			<version>${shiro.version}</version>
			<exclusions>
				<exclusion>
					<groupId>javax.servlet</groupId>
					<artifactId>servlet-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

如果从pom依赖关系里面找不到,那就需要查一下本地有没有直接引用不通过maven管理的第三方包

2.spring boot真的抛弃jsp了吗?

不得不说,spring boot真的要慢慢抛弃jsp了,支持的模版是像FreeMarker,Groovy,Thymeleaf,Mustache这些(一上来就三四个,咱程序猿可是真心苦逼啊),目前还是可以用,往后新的项目就慢慢转吧。

3.打包方式用jar还是war?

一开始我是想用jar来打包,网上也有成功的案例springboot中集成jsp,打成jar包可用jsp,但是我这个项目用jar打出来的包可以启动,但是页面请求死活出不来,那个成功案例里提到需要用spring-boot-maven-plugin的1.4.2版本来打包,高于1.4.2版本打出来的包有问题,很不幸,我的项目如果改用1.4.2版本的话其他地方各种报错,改完一个又来一个,最后无奈放弃这种方案。最后是打成war包可以运行

4.tomcat是用内置还是外置?

网上很多都是推荐外置,但是我觉得用内置方式也没有什么不好,线上配合supervisor工具发布很方便,supervisor这个工具很好用,可以自动管理(开启,停止,重启)程序的运行

5.本地开发环境和发布到生产环境有什么不同?

本地intellij idea配置的环境运行很少问题,倒是发布到线上的时候各种问题一大堆。生产环境就是像我第4点提到的使用supervisor把程序后台运行,执行通过 java -jar xxx.war

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章