spring boot 入门(二)——改变应用服务器

在上一篇中提到springboot项目只要加入了spring-boot-starter-web的依赖里面包含了内置的tomcat应用服务器,项目就可以像普通java工程一样通过main方法启动。但是项目不可能总是开发状态的,总是需要发布到应用服务器中的,在快速迭代的开发过程中,总是需要多次打包的。或者你想把tomcat换成jetty。这篇文章也许可以给你解答。
本文参考了http://blog.csdn.net/james_wade63/article/details/51009423

三步配置实现内置和外置tomcat同时存在

一、将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法

@SpringBootApplication
public 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了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值