SpringBoot

一锹漱、SpringBoot 簡介

  • SpringBoot:build anything你虹、集成大量的第三方庫配置期吓、無容器的web應用程序體系結(jié)構(gòu)、“零配置” out of the box
  • 優(yōu)點:基于Spring、簡化編碼鸳碧、簡化配置是尖、簡化部署瞒御、簡化監(jiān)控

二羽德、SpringBoot 快速入門

  • IDEA 構(gòu)建 SpringBoot 項目并啟動測試
    • 打開 IDEA 選擇新建 Spring Initializr 項目
    • spring boot1.png
    • 點擊下?步繼續(xù)創(chuàng)建几莽,設置項目名,包名宅静,語言描述等信息(特別注意項目名在IDEA 中必須小寫):
    • spring boot2.png
    • 下?步開發(fā)工具里面選擇熱部署和lombok
    • spring boot3.png
    • web里面選擇Spring Web
    • spring boot4.png
    • 設置項目的路徑然后點擊完成
    • spring boot5.png
    • SpringBoot項目的基本目錄結(jié)構(gòu)生成章蚣,第?時間選擇自動導入
    • spring boot6.png
    • 在這個目錄下新增一個類
    • spring boot7.png
    • 新增類
    • spring boot8.png
    • 分別新增包和類controller.HelloController
    • spring boot9.png
    • 生成類后編寫代碼
    • spring boot10.png
    • 打開自動生成的類中的main方法
    • spring boot11.png
    • 選擇運行該main方法
    • spring boot12.png
    • 啟動項目
    • spring boot13.png
    • 打開瀏覽器輸入地址信息http://localhost:8080/并運行
    • spring boot14.png
    • 到此為止Spring Boot項目搭建完畢

三、SpringBoot的項目結(jié)構(gòu)

  • pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
        https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <!-- 設置當前項?的?項?為spring-boot-starter-parent 標記當前項?為?個springboot的項?版本為2.2.6 -->
     <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.2.6.RELEASE</version>
       <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.qfedu</groupId>
     <artifactId>days01_springboot_demo01</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>days01_springboot_demo01</name>
     <description>Demo project for Spring Boot</description>
     <properties><java.version>1.8</java.version></properties>
     <dependencies>
         <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
         <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-devtools</artifactId>
           <scope>runtime</scope>
           <optional>true</optional>
         </dependency>
         <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <optional>true</optional>
         </dependency>
         <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
             <exclusion>
               <groupId>org.junit.vintage</groupId>
               <artifactId>junit-vintage-engine</artifactId>
             </exclusion>
           </exclusions>
         </dependency>
     </dependencies>
     <build>
       <plugins>
         <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
       </plugins>
     </build>
    </project>
    
  • src目錄結(jié)構(gòu)

    • spring boot15.png
    • 說明:注意Days01SpringbootDemo01Application這個類咱們剛剛在項目向?qū)蛇^程中放到了com.qfedu 下姨夹,該類是當前項目的主啟動類纤垂。
    • 我們在 com.qfedu 包下新建的 controller 子包后才建的HelloController類,只有在子包下才會被掃描到 resources 下放的都是資源文件匀伏,里面有:
      • static 目錄:主要放靜態(tài)資源洒忧;
      • templates目錄:里面放模版文件;
      • application.properties文件:主要用來配置當前的 SpringBoot項目够颠。
  • maven構(gòu)建SpringBoot工程

    • 在maven項目中將當前項目的?項目設置為SpringBoot項目熙侍,那么當前項目也就是?個SpringBoot項目,添加SpringBoot?樣的依賴即可

四履磨、SpringBoot的啟動類

  • @SpringBootApplication注解介紹

    • @SpringBootApplication is a convenience annotation that adds all of the following:
    • @Configuration:Tags the class as a source of bean definitions for the application context.
    • @EnableAutoConfiguration:Tells Spring Boot to start adding beans based on classpath settings, other beans, and various property settings. For example, if spring-webmvc is on the classpath, this annotation flags the application as a web application and activates key behaviors, such as setting up a DispatcherServlet .
    • @ComponentScan:Tells Spring to look for other components, configurations, and services in the com/example package, letting it find the controllers.
  • @Configuration注解介紹

    • @Configuration:Tags the class as a source of bean definitions for the application context.
  • @Bean注解介紹
    對于Spring而言蛉抓,所有的對象都可以被認為是bean對象,Spring會管理所有的對象

  • starter介紹

    • starter簡單介紹

五剃诅、SpringBoot的配置文件

  • yml文件的介紹

    • YAML(Yet Another Markup Language)(發(fā)音 /?j?m?l/ ) ?種基于Unicode容易閱讀巷送,容易和腳本語言交互的,用來表達資料序列的編程語言矛辕。
    • 適應場景 腳本語言:由于實現(xiàn)簡單笑跛,解析成本很低,YAML 特別適合在腳本語言中使用序列化:YAML是由宿主語言數(shù)據(jù)類型直轉(zhuǎn)聊品,的比較適合做序列化飞蹂。
    • 配置文件:寫 YAML 要比寫 XML 快得多(無需關(guān)注標簽或引號),并且比 INI 文檔功能更強翻屈。由于兼容性問題陈哑,不同語言間的數(shù)據(jù)流轉(zhuǎn)建議不要用 YAML。
    • 語言優(yōu)點:YAML易于?們閱讀伸眶。 YAML數(shù)據(jù)在編程語言之間是可移植的惊窖。 YAML匹配敏捷語言的本機數(shù)據(jù)結(jié)構(gòu)。 YAML具有?致的模型來?持通用工具厘贼。 YAML支持單程處理界酒。 YAML具有表現(xiàn)力和可擴展性。 YAML易于實現(xiàn)和使用嘴秸。
    • YAML 語法:使用空格 Space 縮進表示分層毁欣,不同層次之間的縮進可以使用不同的空格數(shù)目售担,但是同層元素?定左對齊,即前面空格數(shù)目相同(不能使用 Tab署辉,各個系統(tǒng) Tab對應的 Space 數(shù)目可能不同族铆,導致層次混亂)
    • ‘#’表示注釋,只能單行注釋哭尝,從#開始處到行尾
    • 破折號后面跟?個空格(a dash and space)表示列表
    • 用冒號和空格表示鍵值對 key: value 簡單數(shù)據(jù)(scalars哥攘,標量數(shù)據(jù))可以不使用引號括起來,包括字符串數(shù)據(jù)材鹦。
    • 用單引號或者雙引號括起來的被當作字符串數(shù)據(jù)逝淹,在單引號或雙引號中使用C風格的轉(zhuǎn)義字符 Sequence of Scalars 簡單數(shù)據(jù)列表
  • yml文件的使用

    • 配置對象數(shù)據(jù)語法:key:key1: value1key2: value2 或者:key: {key1: value1,key2: value2}。示例代碼:
    person:
       name: AAA
       age: 18
       addr: AA
    #或者
    person: {name: AAA,age: 18,addr: AA}
    
    • 注意:key1前面的空格個數(shù)不限定桶唐,在yml語法中栅葡,相同縮進代表同?個級別
      配置Map數(shù)據(jù)同上面的對象寫法同上面的對象寫法
      配置數(shù)組(List、Set)數(shù)據(jù)語法:key:- value1- value2 或者:key: [value1,value2]尤泽。示例代碼:
    my:
    city:
     - AAA
     - BBB
     - CCC
     - DDD
     - EEE
    #或者
    my:
    city: [AAA,BBB,CCC,DDD,EEE]
    #集合中的元素是對象形式
    student:
      -name: A
       age: 18
       score: 100
      -name: B
       age: 28
       score: 88
      -name: C
       age: 38
       score: 90
    
    • 注意:value1與之間的 - 之間存在?個空格

六欣簇、 SpringBoot常用配置

  • 多環(huán)境
  • @ConfigurationProperties

七、 SpringBoot整合Mybatis

  • 基本配置

    • pom.xml文件添加依賴
      <dependency>
         <groupId>org.mybatis.spring.boot</groupId>
         <artifactId>mybatis-spring-boot-starter</artifactId>
         <version>1.3.2</version>
      </dependency>
      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
         <version>1.0.28</version>
      </dependency>
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
      </dependency>
    
    • 在resources下新增?個application.yml
    spring:
       datasource:
         url: jdbc:mysql://localhost:3306/supermarket?useSSL=true&serverTimezone=UTC&characterEncoding=UTF-8
         driver: com.mysql.jdbc.Driver
         username: james
         password: 123456
         type: com.alibaba.druid.pool.DruidDataSource
    mybatis:
         type-aliases-package: com.qfedu.pojo
         mapper-locations: classpath:mapper/*Mapper.xml
    
  • 代碼實現(xiàn)

    • 新增?個User類
    @Data
    public class User {
       private String uid;
       private String username;
       private String password;
       private String email;
       private String tel;
       private int level;
       private int integral;
       private int ifNew;
    }
    
    • 新增?個Controller類
    @RestController
    public class UserController {
       @Resource
       private IUserService userService;
       @GetMapping("/Users")
       public List<User> getAllUsers(){
       return userService.getAllUsers();
      }
    }
    
    • 新增?個Service接口
    public interface IUserService {
       List<User> getAllUsers();
    }
    
    • 新增該service接口的實現(xiàn)類
    @Service
    public class UserServiceImpl implements IUserService {
       @Resource
       private IUserDao userDao;
       @Override
       public List<User> getAllUsers() {
           return userDao.getAllUsers();
       }
    }
    
    • 新增一個Dao接口
    @Mapper
    public interface IUserDao {
       List<User> getAllUsers();
    }
    
    • 在resources下新增?個mapper目錄坯约,新增?個 UserMapper.xml 文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        <!-- 整個映射文件為 mapper 節(jié)點熊咽,里面包含 namespace 屬性 -->
        <mapper namespace="com.qfedu.dao.IUserDao">
           <select id="getAllUsers" resultType="user">
              select user_id uid, user_name username, password , email, tel, level,integral, if_new ifNew from users
         </select>
         <select id="getUserByUid" resultType="users">
              select * from users where uid = #{uid}
         </select>
         <update id="updateUsers">
             update users set username = #{username}, password = #{password}, tel=#{tel}, addr=#{addr} where uid = #{uid}
         </update>
         <update id="deleteUserByUid">
             delete from users where uid = #{uid}
         </update>
         <update id="saveUsers">
             insert into users values(null, #{username}, #{password}, #{tel}, #{addr})
         </update>
         <update id="deleteUsers">
             delete from users where uid = #{uid}
         </update>
    </mapper>
    
  • 看看數(shù)據(jù)庫的表結(jié)構(gòu)

  • spring boot16.png
  • 看看表里的數(shù)據(jù)

  • spring boot17.png
  • 看看運行結(jié)果:瀏覽器中訪問http://localhost:8080/Users

  • spring boot18.png
  • 到此為止,SpringBoot 整合 MyBatis 完成

八闹丐、SpringBoot 整合 JSP

  • 基本的配置
    • 修改 pom.xml 文件横殴,添加新的依賴
      <!-- 添加 servlet 依賴模塊 -->
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <scope>provided</scope>
      </dependency>
      <!-- 添加 jstl 標簽庫依賴模塊 -->
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>jstl</artifactId>
      </dependency>
      <!--添加 tomcat 依賴模塊.-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
         <scope>provided</scope>
      </dependency>
      <!-- 使用 jsp 引擎,springboot 內(nèi)置 tomcat 沒有此依賴 -->
      <dependency>
         <groupId>org.apache.tomcat.embed</groupId>
         <artifactId>tomcat-embed-jasper</artifactId>
         <scope>provided</scope>
      </dependency>
    
  • 修改yml文件: 新增 spring mvc 的前后綴
    spring:
       mvc:
       view:
       prefix: /WEB-INF/jsp/
       suffix: .jsp
    
  • 代碼實現(xiàn)
    • 修改controller.java
    @Controller
    public class UserController {
       @Resource
       private IUserService userService;
       @GetMapping("/Users")
       @ResponseBody
       public List<User> getAllUsers(){
           return userService.getAllUsers();
       }
       @GetMapping("/UsersPage")
       public String showUsers(Model model){
           model.addAttribute("list", userService.getAllUsers());
           return "users";
       }
    }
    
  • 修改pom文件的打包方式為war卿拴,在 main下新增目錄webapp衫仑,以及WEB-INF目錄,在WEB-INF下新增 JSP 目錄堕花,JSP 目錄下新增 Users.jsp 文件
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
       <title>users</title>
    </head>
    <body>
        <h1>this is users jsp page</h1>
        <% out.println("hello"); %>
        <table border="0" width="80%" align="center">
        <c:forEach items="${list}" var="u">
           <tr>
             <td>${u.uid}</td>
             <td>${u.username}</td>
             <td>${u.password}</td>
             <td>${u.tel}</td>
             <td>${u.email}</td>
             <td>${u.level}</td>
           </tr>
        </c:forEach>
        </table>
    </body>
    </html>
    
  • 訪問地址:http://localhost:8080/UsersPage
  • spring boot19.png
  • 至此 SpringBoot 整合 JSP 配置完成
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末文狱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子航徙,更是在濱河造成了極大的恐慌如贷,老刑警劉巖陷虎,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件到踏,死亡現(xiàn)場離奇詭異,居然都是意外死亡尚猿,警方通過查閱死者的電腦和手機窝稿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凿掂,“玉大人伴榔,你說我怎么就攤上這事纹蝴。” “怎么了踪少?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵塘安,是天一觀的道長。 經(jīng)常有香客問我援奢,道長兼犯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任集漾,我火速辦了婚禮切黔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘具篇。我一直安慰自己纬霞,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布驱显。 她就那樣靜靜地躺著诗芜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪埃疫。 梳的紋絲不亂的頭發(fā)上绢陌,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音熔恢,去河邊找鬼脐湾。 笑死,一個胖子當著我的面吹牛叙淌,可吹牛的內(nèi)容都是我干的秤掌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼鹰霍,長吁一口氣:“原來是場噩夢啊……” “哼闻鉴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茂洒,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤孟岛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后督勺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渠羞,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年智哀,在試婚紗的時候發(fā)現(xiàn)自己被綠了次询。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡瓷叫,死狀恐怖屯吊,靈堂內(nèi)的尸體忽然破棺而出送巡,到底是詐尸還是另有隱情,我是刑警寧澤盒卸,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布骗爆,位于F島的核電站,受9級特大地震影響蔽介,放射性物質(zhì)發(fā)生泄漏淮腾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一屉佳、第九天 我趴在偏房一處隱蔽的房頂上張望谷朝。 院中可真熱鬧,春花似錦武花、人聲如沸圆凰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽专钉。三九已至,卻和暖如春累铅,著一層夾襖步出監(jiān)牢的瞬間跃须,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工娃兽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菇民,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓投储,卻偏偏與公主長得像第练,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玛荞,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容