spring boot 入门(二)——改变应用服务器
来源:互联网 发布:嫖相 知乎 编辑:程序博客网 时间:2024/06/05 21:51
在上一篇中提到springboot项目只要加入了spring-boot-starter-web的依赖里面包含了内置的tomcat应用服务器,项目就可以像普通java工程一样通过main方法启动。但是项目不可能总是开发状态的,总是需要发布到应用服务器中的,在快速迭代的开发过程中,总是需要多次打包的。或者你想把tomcat换成jetty。这篇文章也许可以给你解答。
本文参考了http://blog.csdn.net/james_wade63/article/details/51009423
三步配置实现内置和外置tomcat同时存在
一、将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法
@SpringBootApplicationpublic class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); }}
这个不是很懂,应该是提供给外部tomcat的启动入口。
二、pom.xml文件中修改之前的packaging标签内容jar改成war
<packaging>war</packaging>
这样可以确保maven打包的时候会打war包
三、pom.xml文件中增加依赖配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope></dependency>
这一步的重点是scope标签值为provided。加入这个依赖之后你会发现maven jar包没有任何变化。
provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。这样就不会与外部的tomcat冲突。
完成以上三步就可以右键项目—>maven—>update project configuration..来更新一下项目配置。然后可以mvn clean package了。最后将war包放在外部tomcat/webapp下,运行tomcat,ok。
同时,你依旧可以在Application类中右键run来启动内部tomcat。
两步配置内置jetty替代内置tomcat
如果你的项目使用jetty作为服务器而不是tomcat。而springboot默认的内置服务器是tomcat,默认的启动类配置也是依据tomcat的。
两步实现替换内置服务器。
一、修改pom.xml文件如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> <scope>provided</scope> </dependency>
这一步是去掉了tomcat内置服务器的依赖,增加了jetty的,而且设置了scope为provided,这样打包的时候就不会加入war包中。
二、在启动类中增加一个方法和一个注解
@Bean public EmbeddedServletContainerFactory servletContainer() { JettyEmbeddedServletContainerFactory factory = new JettyEmbeddedServletContainerFactory(); return factory; }
这样在使用内置应用服务器的时候jetty就会替代tomcat了。
- spring boot 入门(二)——改变应用服务器
- spring-boot入门(二)
- Spring Boot学习入门篇(二)--使用Spring Boot
- 10.5、spring boot的web应用——更改服务器
- Spring Boot系列:入门应用(一)
- SPRING BOOT快速搭建WEB应用教程(二)—HELLOWORLD
- Spring boot入门系列(二):使用Thymeleaf模板引擎开发Web应用简单示例
- Spring Boot入门—helloword
- Spring boot入门实例 简易登录(精通Spring+4.x++企业应用开发实战 学习笔记二)
- Spring读书学习笔记(二)——Spring boot
- Spring Boot学习总结(1)——Spring Boot入门
- Spring boot(二)
- Spring Boot(二)
- Docker 从入门到放弃(二)之Spring Boot
- Spring Boot RabbitMQ 入门(二) 环境搭建
- spring boot入门(二)- 输出json对象
- spring-boot入门(二)使用JSP视图
- Spring Boot入门(一)- Gradle构建应用
- Spring面试,IoC和AOP的理解
- 接口测试,想说爱你并不难
- JVM垃圾回收机制
- 本地和asset点9图加载
- 图的储存方式之邻接链表
- spring boot 入门(二)——改变应用服务器
- Python——集合字典解析的对象无序和无副本特性
- No mapping found for HTTP request with URI
- 23种设计模式(8)-代理模式
- 编写测试用例的方法——等价类划分 (学习笔记)
- shell脚本之符号与命令
- 树莓派问题
- MATLAB作图笔记
- 【Linux】中的NAT技术与代理服务器