Spring框架學習筆記(5)——Spring Boot創建與使用

  • 2019 年 11 月 2 日
  • 筆記

Spring Boot可以更為方便地搭建一個Web系統,之後伺服器上部署也較為方便

創建Spring boot項目

1. 使用IDEA創建項目

2. 修改groupid和artifact

3. 一路next,自動IDEA就會自動下載依賴的jar包

4. 運行

之後運行項目(Application類),打開http://localhost:8080就會出現下面的白板頁面,說明已配置成功

項目結構說明及使用

項目結構說明


我們可以看見項目中是這樣的結構,Spring boot內置了tomcat伺服器,所以,我們可以直接通過application來啟動

SpringbootdemoApplication

package com.wan.springbootdemo;    import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;    @SpringBootApplication  public class SpringbootdemoApplication {        public static void main(String[] args) {          SpringApplication.run(SpringbootdemoApplication.class, args);      }  }

可以看到SpringbootdemoApplication中的程式碼比較簡單,使用了一個註解SpringBootApplication,用來標註當前類是Spring boot的入口類,之後通過SpringApplication.run啟動

SpringBootApplication註解中也是內置了幾個spring的註解,打開其中可以看到

@SpringBootConfiguration 表示該類是一個配置類

@EnableAutoConfiguration 啟用自動配置,例如添加了spring-boot-starter-web依賴,會自動添加Tomcat和SpringMVC的依賴,SpringBoot會對Tomcat和SpringMVC進行自動配置.

@ComponentScan 能掃描當前包及其子包中的類 即com.lanqiao.springboot.tutorials包及其子包下的所有的組件類。

spring boot使用一個封裝的註解,把之前我們得使用註解和配置文件去配置spring的步驟都省去了,springboot不僅讓我們的編碼是輕量級的,而且也把我們的配置變成了輕量級

控制器使用

之前使用springmvc框架,我們寫一個controller,得在配置文件中開啟自動掃描,然後controller類中使用controller註解進行標明,而使用spring boot則不需要這麼繁瑣,只需要標註上一個@RestController註解即可

註解RestController包含了Controller和ResponseBody,返回的實體類或者List都會轉為json數據

這裡可以使用spring boot中的註解,也可以使用spring mvc的註解RequestMappingResponseBody

package com.wan.springbootdemo.controller;    import org.springframework.web.bind.annotation.RequestMapping;  import org.springframework.web.bind.annotation.RestController;    /**   * @author StarsOne   * @date Create in  2019/10/17 0017 18:24   * @description   */  @RestController  public class UserController {      @RequestMapping("user/data")      public String getData() {          return "this is returning data";      }  }

然後通過訪問localhost:8080/user/data就可以看到返回的數據

修改context項目地址

上面的項目介面中,我們可以看到一個名為application.properties的文件,裡面可以用來進行一些設置,如context上下文,port埠號

補充:spring boot中除了使用properties這種文件進行配置,還可以使用yml文件

我在其中添加了下面的程式碼,就是用來設置context

server.servlet.context-path=/springbootdemo

之後上面的controller的訪問地址就會變為了localhost:8080/springbootdemo/user/data

去除spring boot啟動圖標

啟動的時候,命令行會出現一個Spring Boot的頁面

不知道為什麼,我這裡啟動的圖標怎麼看都不像Spring Boot。。

我們想要去除這個圖標,可以修改application中的啟動方式來達到目的

package com.wan.springbootdemo;    import org.springframework.boot.Banner;  import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;    @SpringBootApplication  public class SpringbootdemoApplication {        public static void main(String[] args) {          SpringApplication springApplication = new SpringApplication(SpringbootdemoApplication.class);          // 去除啟動控制台Spring Boot的圖標          springApplication.setBannerMode(Banner.Mode.OFF);          springApplication.run(args);        }    }  

熱部署

想要實現修改文件,而不想要重啟application,可以進行熱部署設置,設置很簡單,只需要添加下面的這個依賴即可(之前創建項目的時候其實已經添加了此依賴

<!-- 自動載入SpringBoot的更改 無需重啟引導類 -->  <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-devtools</artifactId>      <optional>true</optional>  </dependency>  

可能還需要進行下面的運行配置:

整合MyBatis

1.添加依賴

添加下面的依賴  ```  <!-- 使用mybatis-->  <dependency>      <groupId>org.mybatis.spring.boot</groupId>      <artifactId>mybatis-spring-boot-starter</artifactId>      <version>2.1.0</version>  </dependency>  ```

2.創表、創實體類和mapper

創表和創建實體類,還有創建對應的mapper.xml和mapper.java文件

這裡需要注意,mapper介面文件需要加上註解@Repository,需要spring進行管理,之後我們需要一個對應的Service.java,包含著mapper介面,使用spring把mapper自動裝載

package com.wan.mofang.service;  import com.wan.mofang.mapper.UserMapper;  import com.wan.mofang.model.User;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Service;  import java.util.List;  /**   * @author StarsOne   * @date Create in  2019/10/28 0028 22:46   * @description   */  @Service  public class UserService {      @Autowired      UserMapper userMapper;//自動裝載的對象        public List<User> selectAll(User user) {          return userMapper.selectAll(user);      }  }

UserController.java

package com.wan.mofang.controller;    import com.wan.mofang.model.User;  import com.wan.mofang.service.UserService;    import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.web.bind.annotation.RequestMapping;  import org.springframework.web.bind.annotation.RestController;    import java.util.List;    /**   * @author StarsOne   * @date Create in  2019/10/28 0028 22:54   * @description   */  @RestController  @RequestMapping("/user")  public class UserController {      @Autowired      private UserService userService;//自動裝載        @RequestMapping("selectAll")      public List<User> selectAll(User user) {          return userService.selectAll(user);      }      }

PS:這裡,需要注意的,如果是傳入一個實體類,url傳入的參數名要與User中的成員變數名一致,如果是String類型或者是Int類型,則url傳入的參數則與參數名對應

如有下面的一個controller裡面方法:

@RequestMapping("selectAll")  public List<User> selectAll(String username) {      return userService.selectAll(user);  }

傳入的url為url=xx?username=xx

3.修改配置文件

這裡使用yml來配置,當然,使用properties文件也可以,根據實際情況,進行修改(修改application-dev.yml)

application.yml

spring:    profiles:      active: dev

application-dev.yml

server:    port: 埠號,默認不寫就是8080    servlet:      context-path: 項目上下文  spring:    datasource:      username: 資料庫用戶名      password: 資料庫密碼      url: 資料庫地址      driver-class-name: oracle驅動  mybatis:    mapper-locations: classpath:mapping/*Mapper.xml    type-aliases-package: 好像配置了別名沒有啟動作用  #showSql  logging:    level:      com:        example:          mapper : debug

4.開啟自動掃描

在Spring Boot啟動類使用註解MapperScan,參數為mapper.java文件所在的包,就會自動掃描並生成mapper的bean對象

package com.wan.mofang;  import org.mybatis.spring.annotation.MapperScan;  import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;  @MapperScan("com.wan.mofang.mapper")  @SpringBootApplication  public class MofangApplication {        public static void main(String[] args) {          SpringApplication.run(MofangApplication.class, args);      }    }  

Junit測試

直接創建一個入口類的對應的Test,之後使用上註解SpringBootTest,指定入口類,之後,需要的文件使用註解Autowired進行自動裝載,

@SpringBootTest(classes = MofangApplication.class)  class MofangApplicationTests {      @Autowired      UserService userService;        @Test      void testSelectALl(){          List<User> user = userService.selectALl();          ...      }    }