Spring Boot入門教程(一):搭建SpringMVC工程和Spring Boot工程

一:傳統SpringMVC工程搭建步驟

在熟悉Spring Boot工程之前先搭建一個Spring + SpringMVC的工程,需要如下幾步:

  • 引入Spring依賴,一般都會引入很多Spring的依賴,如spring-core、spring-context、spring-context-support、spring-webmvc 等
  • 配置web.xml, 要配置contextConfigLocation參數,要配置Spring的監聽器ContextLoaderListener,要配置SpringMVC的分發Servlet DispatcherServlet
  • 配置spring-servlet.xml,配置SpringMVC對應的內部資源視圖識別器InternalResourceViewResolver的前綴、後綴等
  • 配置applicationContext.xml,配置Spring的核心配置文件
  • 配置完成後就可以寫Controller了,然後啓動tomcat

二:具體步驟

1.引入Spring依賴
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <log4j.version>2.5</log4j.version>
    <jstl.version>1.2</jstl.version>
    <spring.version>4.2.3.RELEASE</spring.version>
</properties>

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>${jstl.version}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>${spring.version}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>${spring.version}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>${spring.version}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-support</artifactId>
  <version>${spring.version}</version>
</dependency>
2. 配置web.xml
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:conf/spring/applicationContext.xml</param-value>
  </context-param>

  <listener>
    <description>Spring監聽器</description>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
3. 配置WEB-INF/spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.2.xsd">

    <context:component-scan base-package="com.mengday.platform.web.controller" />

    <bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property> <!-- 視圖文件的前綴 -->
        <property name="suffix" value=".jsp"></property> <!-- 視圖文件的後綴名 -->
        <!-- view是用什麼顯示,這裏是jsp,還可以用velocity之類的 -->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
    </bean>
</beans>
4. applicatonContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">

</beans>
5. HelloWorldController
@Controller
public class HelloWorldController {

    @RequestMapping("/index")
    public String index(){
        return "index";
    }
}
6. 在IntelliJ IDEA中配置tomcat並啓動

在這裏插入圖片描述

三:總結

  • 在pom.xml中需要添加很多依賴(言外之意:能不能少添加點依賴呢?)

  • 需要配置web.xml、spring-servlet.xml、applicatonContext.xml等配置文件,可以看到僅僅是集成一個mvc的功能就要配置這三個文件(言外之意:配置文件真多),而且這些配置幾乎全部在每個項目都是相同的配置,只是個別值不同(言外之意:能不能不配置,讓框架自己去配置,具體配置的值都採用大家通用的常用的值,如果默認的值不滿足條件,提供一個配置文件去讓外界去覆蓋掉,採用約定大於配置的方式)

  • 配置外部tomcat(言外之意:還要配置一下tomcat,能不能像普通Java程序一樣,直接運行main方法就可以了呢 ?)

Spring缺點: 配置繁瑣,各種XML、Annotation配置,如果出錯了也很難找出原因。


創建Spring Boot 工程


Spring Boot的項目也是基於maven或者gradle的,有兩種方式:一種是通過IDE創建(ide也是基於官網的,只不過幫你自動下載並使用ide幫你打開了),一種是在官網上創建https://start.spring.io, github地址:https://github.com/spring-projects/spring-boot/

方式一:使用IntelliJ IDEA的Spring Initializer創建

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

@RestController
public class HelloWorldController {

    @RequestMapping("/index")
    public String index(){
        return "suceess";
    }
}

訪問http://localhost:8080/index

方式二:https://start.spring.io

在瀏覽器上直接輸入https://start.spring.io,只需要Dependencies中輸入Web選中即可(輸入Web就是集成SpringMVC功能,如果不需要可以什麼都不輸入,後面如果需要集成SpringMVC的話也是超級very很簡單的),然後生成項目(即下載項目),然後使用idea打開即可
在這裏插入圖片描述

此種方式還要跑到官網,下載項目,然後再使用idea open項目,如果使用idea就不需要這些步驟,會自動下載幫你打開。

可以看到傳統SpringMVC的集成方式和使用Spring Boot的搭建方式有什麼不同,最大的特點就是快,沒有那麼多的配置,可以說是零配置,不像傳統SpringMVC項目,要配置很多東西,雖然這些東西都是從別的地方複製過來的,完成起來也需要幾分鐘時間,肯能還會出錯,都是一些體力活,創建一個Spring Boot項目只需要幾秒鐘就能搞定,而且不會出錯,也不需要任何配置。

Spring Boot項目就是爲了解決Spring配置繁瑣的問題,最大化的實現約定大於配置(convention over configuration),以最快的速度來搭建項目,採用註解配置來替換xml配置。


兩種方式的區別:

傳統maven-archetype-webapp和Spring Boot項目結構比較

在這裏插入圖片描述

在這裏插入圖片描述

  • 打包方式不同:

傳統web maven項目使用的是maven-archetype-webapp骨架,打包方式是使用的war包
Spring Boot的打包方式是使用的jar包

  • pom.xml中引入的依賴不同

傳統web項目是引入多個單獨的依賴
Spring Boot是引入的spring-boot-starter, 在spring boot中大部分依賴不需要指定version,因爲版本號已經在spring-boot-starter-parent中定義過了

  • 項目目錄結構不同:

傳統的web項目中src/main/java下是沒有類的,Spring Boot項目中有一個啓動類(Project名稱+Application), 而且在src/test/java中也有一個測試類(Project名稱+ApplicationTest)
傳統的web項目有src/main/webapp/WEB-INF/web.xml, Spring Boot中沒有web.xml
傳統的web項目resources的目錄是空的,Spring Boot項目中resources中有static、templates目錄和一個配置文件application.properties

  • 項目運行方式不同

傳統web項目是啓動tomcat
Spring Boot項目是直接運行main方法或者直接運行jar(java -jar .jar)

Spring Boot的優點

  • 集成框架非常簡單,例如集成SpringMVC,只需引入spring-boot-starter-web這一個依賴,也不需要做任何配置,這樣集成起來非常快速方便。Spring Boot支持很多常用的框架集成, 如 log、test、mybatis、nosql、mq、模板技術(thymeleaf、freemark)、jpa、aop、actuator 等, 具體請查看Starter POMs、 Starter POMs

  • 引入的依賴的數量很少,例如要引入測試依賴JUnit、Hamcrest、Mockito只需要引入spring-boot-starter-test這一個依賴就行了

  • 自動化配置,使用默認配置,再也不需要applicationContext.xml等配置文件了
    支持自定義配置,可以配置在application.yml或者Config類中,如果自定義了就使用自定義的值,沒有自定義的則使用默認的值

  • 運行更加簡單,直接使用java -jar 命令,或者直接在IDE中運行main方法

  • 內置運維的該功

Spring Boot的缺點:

  • 高度封裝,出現問題不易排查,適合有開發驚訝的攻城獅,不適合初學者,初學者上手容易,一旦出現問題就很難排查。
  • 將現有或傳統的Spring Framework項目轉換爲Spring Boot應用程序是一個非常困難和耗時的過程。它僅適用於全新Spring項目。
  • 資料比較少,文檔比較少
  • Spring Boot 正在快速發展,可能版本變動比較大

原文鏈接:https://blog.csdn.net/vbirdbest/article/details/79573740

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章