1.三种常见的部署方式
1)搞成groovy源码,需要手写产生,可以部署于Cloud Foundry(paas服务/云环境)上和容器中(docker)
2)搞成jar包,可以由maven、gradle或者是spring boot CLI搞,出了不能往java应用服务器(tomcat等)中部署以外其他地方基本上都可以部署
3)搞成war包,可以由maven或者是gradle搞,可以往云环境和javaweb应用服务器中部署
2.各部署方式操作细节
1)搞war包
着重介绍maven:
第一步:
修改pom.xml文件,把packaging元素的值改为war
<packaging>war</packaging>
第二步:
新建一个SpringBootServletInitializer的子类,并重写configure方法。
之所以要这么搞,是因为war包想要正常启动的话,需要war包中包含启动spring MVC dispatcherServlet的配置文件的话(web.xml文件或者是servlet的初始化文件),那么war是没法正常使用的。针对这个问题,spring boot提供了一个类--SpringBootServletInitializer ,这个类是spring的WebApplicationInitializer类的实现,这个类可以把相应的servlet都注册为spring bean绑定到servlet容器中。这样war包就可以正常启动了。
configure方法的重新是为了修改注册的配置类(父类没有加载任何spring配置类):
//重写configure,注册启动类,然后由启动类注册其他配置类
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
第三步:
完成了第二步配置之后,第三步就很简单了,直接利用maven工具打包就行了。如果是idea:
直接package就阔以咯。
当然也可以用maven命令进行打包:$ mvn package即可。
操作完后,会在target生成相应的war包。
2)搞jar包
如果用idea打包,会比上面的war包多了一步操作,需要:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
在pom.xml文件中添加如下内容,引入maven打包插件才行,不然不会把依赖库打入jar包中。
注:在程序只有一个主类时,不需要再pom文件中指明主类位置,因为maven在打包时自动去找main方法。当然如果main方法被你干掉了,就会报错啦。