Spring Boot之外置服務(wù)器開(kāi)發(fā)

在實(shí)際開(kāi)發(fā)過(guò)程中,使用到了spring boot進(jìn)行項(xiàng)目開(kāi)發(fā)。它不僅僅簡(jiǎn)化了開(kāi)發(fā)的流程,更使得項(xiàng)目具備模塊化特點(diǎn)。相信使用過(guò)Spring Struts Hibernate或者Spring Mvc Spring Mybatis等框架進(jìn)行開(kāi)發(fā)的你,都有這樣的感覺(jué),Spring Boot的配置好簡(jiǎn)單,再也不用編寫那么復(fù)雜的xml文件,再也不用為了找各種第三方庫(kù)而煩惱。而且,Spring Boot將每一個(gè)項(xiàng)目部署成一個(gè)簡(jiǎn)單的jar包,最終通過(guò)jar包運(yùn)行項(xiàng)目(使用內(nèi)置的Servlet Container)。但是實(shí)際中,考慮到兼容性等問(wèn)題,項(xiàng)目的運(yùn)行大多是還是采用war包,將其部署到Tomcat或者Jetty上,并通過(guò)啟動(dòng)這些Servlet Container來(lái)運(yùn)行項(xiàng)目。這個(gè)項(xiàng)目就是簡(jiǎn)單得模擬,通過(guò)外置的Servlet Container來(lái)運(yùn)行Spring Boot項(xiàng)目。

項(xiàng)目開(kāi)發(fā)環(huán)境搭建

開(kāi)發(fā)工具 版本
Intellij idea 2017.1.2
Spring Boot 1.5.2.RELEASE
Jetty jetty-9.2.19.v20160908
Maven apache-maven-3.5.0

搭建不同環(huán)境部署-Maven Profile

在Spring Boot根據(jù)Profile讀取相應(yīng)的配置文件,主要有兩種方式。第一種方式,在application.properties文件中,指定spring.profile.active=dev/test/pro,Spring Boot會(huì)根據(jù)相應(yīng)profile名稱,到classpath下找到application-**.properties文件,讀取相應(yīng)的配置,加載到系統(tǒng)中。本項(xiàng)目,主要介紹第二種方式,利用Maven的pom文件進(jìn)行配置,從而設(shè)置不同的profile。

通過(guò)外部Servlet Container啟動(dòng)Spring Boot

在正常的java web項(xiàng)目中,web.xml 文件是必不可少了的。這個(gè)文件主要提供了一下功能:

web.xml 配置 功能
注入Spring上下文監(jiān)聽(tīng)器 通過(guò)引入xml配置文件,注入Spring框架
配置DispatcherServlet 通過(guò)引入xml配置文件,并且配置Servlet,注入Spring mvc框架

那么在項(xiàng)目中完全不需要這么做,一個(gè)Java類SpringBootServletInitializer幫我們解決了這個(gè)手寫web.xml 配置的問(wèn)題。但是對(duì)于定義一些<error-code></error-code>等問(wèn)題,還是必須到web.xml中去做。我們只需要定義一個(gè)類,繼承SpringBootServletInitializer即可,配置這個(gè)類的過(guò)程就相當(dāng)于寫web.xml的過(guò)程。詳細(xì)編碼內(nèi)容,全部在項(xiàng)目中。


@SpringBootApplication
public class SpringBootWebServerConfig extends SpringBootServletInitializer{
    
    
    //!!!!這個(gè)方法一定要寫!!!!
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        this.setRegisterErrorPageFilter(false);
        return builder.sources(SpringBootWebServerConfig.class);
    }
    
}

那么,SpringBootServletInitializer幫我們定義好了web.xml文件。接下來(lái)的問(wèn)題就是,Spring框架以及Spring mvc框架(Mybatis等框架)的配置。對(duì)于Spring mvc框架的配置,只需要這樣做即可:


@Configuration
@EnableWebMvc //<mvc:annotation-driven>
public class SpringBootWebServerMvc extends WebMvcConfigurerAdapter {
    //配置jsp映射,exception處理等
}

這個(gè)文件相當(dāng)于Springmvc.xml文件,即對(duì)Spring mvc框架進(jìn)行了配置。對(duì)于Spring 框架的配置,只需要這樣做即可:

@Configuration
@Import({SpringServiceConfig.class,SpringDaoConfig.class})
public class SpringContextConfig {
    //Spring 框架配置

}

注意

由于Spring Boot框架,@SpringBootApplication修飾的啟動(dòng)類,會(huì)自動(dòng)將同級(jí)以及下一級(jí)目錄下的所有類進(jìn)行初始化,當(dāng)然這些類必須被@Controller @Service @Reponsitory @Component 注解修飾,而不需要單獨(dú)寫 ComponentScan等配置。

ssm(Spring Springmvc mybatis) 配置 Spring Boot配置
web.xml 配置 SpringBootServletInitializer配置
springmvc配置 繼承 WebMvcConfigurerAdapter類,并且被@Configuration、@EnableWebMvc修飾
spring 配置 被@Configuration 修飾(其他配置根據(jù)具體業(yè)務(wù)變化而變化)

本文中相關(guān)的代碼Springboot-web-war,歡迎fork。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容