在實(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。