SpingBoot項目搭建(詳細)

SpingBoot

(原創:黑小子-餘)

 

 

springboot官網:->點擊<-

spring官網:->點擊<-

 

1、SpringBoot簡介

Spring Boot是由Pivotal團隊提供的全新開源的輕量級框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,繼承了Spring框架原有的優秀特性,從而使開發人員再也不須要定義樣板化的配置。經過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成爲領導者。設計目的:簡化新Spring應用的搭建及開發。

面試一句話安排的面試官明明白白:Springboot是一個快速開發框架,可以幫助咱們快速整合第三方經常使用框架,底層採用Maven繼承,徹底註解化,簡化Xml配置,內嵌Tomcat,最終以Java應用程序執行。用來簡化Spring應用的初始搭建以及開發過程。雖說它是一個框架,實質上它就是一個Jar包。

 

Spring框架簡介

在講springboot時,必講spring框架。多是由於我愛她,在隔壁村那個叫春天的姑娘,去年種稻谷比賽我輸給了她,不過那一次交手以後,我至今忘不了她,明年的划龍舟比賽,我打算請假回去,由於她也參加了,咱們村若是沒有我,划龍舟這個項目上,咱們村可能又會輸。不扯犢子了,繼續。

面試一句話安排的面試官明明白白:Spring是一個IOC(依賴注入)也稱DI(控制反轉)與AOP(面向切面)的容器框架。它的目的是:使現有的技術更加實用,推薦最佳的編碼實現,從而簡化企業開發。主要模塊:核心容器、Spring上下文、SpringAopSpringDaoSpringROMSpringWebSpringMVC。spring的出現意義至關於改變了世界,它存在的意義毋庸置疑。

 

好處

1、解耦。(下降各個組件還有各層之間的耦合度)html

2、可使容器提供衆多的服務。(如:事務管理、日誌管理)前端

3、單例模式的支持。(容器提供單例模式的支持,開發人員不須要本身去編碼實現)java

4AOP技術。(利用AOP能夠實現權限攔截等功能)web

5、容器提供衆多的輔助類。(這些輔助類能夠加快項目的應用開發)面試

6、輕鬆與其它框架整合、集成。spring

 

控制反轉、依賴注入、面向切面

IOC(控制反轉):應用的自己不須要去建立和維護對象,而是交給它的外部容器去負責,這樣控制權就交給了外部容器,從而耦合在一塊兒。數據庫

(如:咱們知道,在java中,實例化對象有三種方法:類構造器、靜態工廠方法、實例工廠方法。在傳統的java開發模式中,咱們須要用new來建立或者getInstance等直接或間接調用構造方法來建立一個對象;而在spring開發模式中,spring使用工廠模式爲咱們建立了所須要的對象,咱們使用時,不須要本身去建立,而是直接去調用spring爲咱們所提供的對象便可,這就是控制反轉的思想。編程

 

DI(依賴注入):運行期間,對象由外部容器動態的注入到組件中,讓BeanBean之間以配置文件組織在一塊兒,而不是以硬編碼的方式。Spring使用JavaBean對象的Set方法或者帶參數的構造方法爲咱們建立所需對象時將其屬性自動設置成咱們須要的值的過程就是依賴注入的思想。)api

 

AOP(面向切面):開發人員只須要關心點或橫切典型的職責分界線的行爲(如:日誌和事務管理),進行模塊化。AOP原理是:Spring採用JDK的動態代理來實現。(在面向對象的思想中,咱們將事務縱向抽象成一個個的對象,而在spring的面向切面編程中,咱們將某些相似的方面橫向抽象成一個切面,對這些切面進行一些如:權限驗證、事務管理、日誌管理等公用操做過程就是面向切面編程的思想。)瀏覽器

1代理模式——SpringAOP原理是:Spring採用JDK的動態代理來實現。

2單例模式——Spring的配置文件中定義Bean默認爲單例模式。

3前端控制器模式——Spring提供Dispatcherservlet來對請求進行分發。

4工廠模式——在工廠模式中,咱們建立對象是不會對客戶端暴露咱們建立的邏輯,而是提供一個共同的接口來指向新建立的對象。Spring中使用BeanFactory來建立對象的實例。

 

Spring事務

Spring支持兩種事務:一種是編程式事務,一種是聲明式事務。

編程式事務:這意味你經過編程的方式來管理事務,能夠給你帶來極大的靈活性,可是比較難以維護。

聲明式事務:這意味你能夠將業務代碼和事務管理分離,你只需用註解和xml配置來管理事務,具備良好的適應性。

它和數據庫事務同樣,必須服從ACID原則:原子性、一致性、隔離性、持久性。

通俗理解,事務是一組原子操做單元,從數據庫的角度來講,事務是一組SQL指令,要麼所有執行,要麼所有撤銷不執行。

(1)原子性:事務中最基本的操做單元,要麼所有成功,要麼所有失敗,而後回滾。

(2)一致性:保證事務在執行以前和執行以後數據庫都保持一致的狀態。

3隔離性:指的是併發環境下,當不一樣的事務同時操做相同的數據時,每一個事務都有各自完整數據空間。

4持久性:表示事務執行完畢後,數據庫的數據是永久保存在數據庫中的。

 

併發事務問題

1第一類丟失更新:撤銷一個事務時,把其餘事務已提交更新的數據覆蓋。

2髒讀:一個事務讀取到另外一個事務未提交的更新數據。

3幻讀和虛讀:一個事務執行兩次查詢,第二次結果集包含第一次中沒有或某些已經刪除的數據,形成兩次數據結果不一致;這是其中一個事務在這兩次查詢還在進行之中,插入或刪除形成的。

4不可重複讀:兩個事務同時讀取到同一條數據,此時恰好其中一個更新了數據,兩個結果相異,不可被信任。

5第二類丟失更新:在不可重複讀的狀況下。若是兩個事務都讀取同一行,而後兩個都進行了讀寫操做並提交,第一個事務所作的改變就會丟失。

 

 

 

2、SpringBoot搭建

本教程是在Eclipse開發工具中,IDEA中更快、更容易,裏面有集成插件。

在線安裝:注意我在我舊版本的Eclipse上安裝插件時報錯,百度試了不少方法沒有成功。最後,我把舊版本Eclipse卸掉,去官網下載了最新版本成功了。

Eclipse官網:->點擊<-

              Eclipse安裝教程:->點擊<-

 

(1)安裝springboot插件。打開eclipse -> Help -> Eclipse Marktplace。

 

(2)進去在 Find 搜索 spring 或者 sts 在線查找。

 

 

(3)而後一直next,等下載加載完畢後,能夠看到下圖已經安裝的插件。

 

 

(4)能夠看到菜單項多出了 SpringBoot 這一項,表示成功了。

 

 

 

(5)接下來建立SpringBoot-1項目,如圖

 

 

(5)這裏我只勾選Spring Web,由於只作一個簡單的演示。勾選其餘的,太耗時。

 

 

 

 

(6)建立完成。這裏有個問題,項目的包都是以文件夾形式存在的,那咱們來設置解決一下。

 

 

(7)鼠標右鍵,最後一項 properties。

 

 

 

 

(8)按圖步驟,便可。

 

 

 

 

 

 

(9)如今來編寫一個程序,建立controller包,加入controller類。注意左圖這個方式是錯誤的,程序能跑,但頁面說路徑是錯的,具體能夠去參考springboot規範。右圖這樣成功運行。

 

(10)SpringBoot1Application執行程序類是自動生成的,咱們只需建立Controller類,建立一個方法,加入註解。

package com.springboot.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @RequestMapping("/hello")
    public String Hello() {
        return "Hello 歡迎來到SpringBoot世界!";
    }
}

 

註解@RestController與@Controller的區別

 開發RESTful API 時,通常都會在Controller上加上@Controller註解,可是有時候加上@RestController,看了資料,說說他們的區別:
@RestController註解等價於@ResponseBody + @Controller。@RestController和@Controller的共同點是都用來表示Spring某個類是否能夠接收HTTP請求,兩者區別: @RestController沒法返回指定頁面,而@Controller能夠;前者能夠直接返回數據,後者須要@ResponseBody輔助。

   

   ① 是否能夠返回頁面

  答:@RestController沒法返回指定頁面,而@Controller能夠。

  解析:對於Controller, 若是隻是使用@RestController註解,則其方法沒法返回指定頁面,此時配置的視圖解析器 InternalResourceViewResolver不起做用,返回的內容就是 return 裏的內容。 若是須要返回到指定頁面,則須要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
   

   ② 返回內容
  若是須要返回JSON,XML或自定義mediaType內容到頁面,@RestController本身就能夠搞定,這個註解對於返回數據比較方便,由於它會自動將對象實體轉換爲JSON格式。而@Controller須要在對應的方法加上@ResponseBody註解。

 

 

@RequestMapping:是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。

 

 

@SpringBootApplication:主程序註解,用來開啓springboot的各項能力。

 

(11)項目運行,有好幾種,這種比較快捷。

 

 

(12)啓動能夠看到,8080端口號。

 

 

瀏覽器輸入:http://localhost:8080/hello  ,成功輸出。

 

 

 

 

 

 

 

 

 

 

 

 

 

-----------------------------------------------------------END----------------------------------------------------------------

 

qq:2931445528

 

微信:Y2931445528

相關文章
相關標籤/搜索