在實(shí)際開發(fā)過程中,使用到了spring boot進(jìn)行項(xiàng)目開發(fā)。它不僅僅簡化了開發(fā)的流程,更使得項(xiàng)目具備模塊化特點(diǎn)本股。相信使用過Spring Struts Hibernate或者Spring Mvc Spring Mybatis等框架進(jìn)行開發(fā)的你,都有這樣的感覺桐腌,Spring Boot的配置好簡單,再也不用編寫那么復(fù)雜的xml文件苟径,再也不用為了找各種第三方庫而煩惱案站。而且,Spring Boot將每一個(gè)項(xiàng)目部署成一個(gè)簡單的jar包棘街,最終通過jar包運(yùn)行項(xiàng)目(使用內(nèi)置的Servlet Container)蟆盐。但是實(shí)際中,考慮到兼容性等問題遭殉,項(xiàng)目的運(yùn)行大多是還是采用war包石挂,將其部署到Tomcat或者Jetty上,并通過啟動(dòng)這些Servlet Container來運(yùn)行項(xiàng)目险污。這個(gè)項(xiàng)目就是簡單得模擬痹愚,通過外置的Servlet Container來運(yùn)行Spring Boot項(xiàng)目。
項(xiàng)目開發(fā)環(huán)境搭建
開發(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启妹。
通過外部Servlet Container啟動(dòng)Spring Boot
在正常的java web項(xiàng)目中,web.xml 文件是必不可少了的削祈。這個(gè)文件主要提供了一下功能:
web.xml 配置 | 功能 |
---|---|
注入Spring上下文監(jiān)聽器 | 通過引入xml配置文件翅溺,注入Spring框架 |
配置DispatcherServlet | 通過引入xml配置文件,并且配置Servlet髓抑,注入Spring mvc框架 |
那么在項(xiàng)目中完全不需要這么做咙崎,一個(gè)Java類SpringBootServletInitializer幫我們解決了這個(gè)手寫web.xml 配置的問題。但是對(duì)于定義一些<error-code></error-code>
等問題吨拍,還是必須到web.xml中去做褪猛。我們只需要定義一個(gè)類,繼承SpringBootServletInitializer即可羹饰,配置這個(gè)類的過程就相當(dāng)于寫web.xml的過程伊滋。詳細(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文件。接下來的問題就是馍资,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馋吗。