一锹漱、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 項目
- 點擊下?步繼續(xù)創(chuàng)建几莽,設置項目名,包名宅静,語言描述等信息(特別注意項目名在IDEA 中必須小寫):
- 下?步開發(fā)工具里面選擇熱部署和lombok
- web里面選擇Spring Web
- 設置項目的路徑然后點擊完成
- SpringBoot項目的基本目錄結(jié)構(gòu)生成章蚣,第?時間選擇自動導入
- 在這個目錄下新增一個類
- 新增類
- 分別新增包和類controller.HelloController
- 生成類后編寫代碼
- 打開自動生成的類中的main方法
- 選擇運行該main方法
- 啟動項目
- 打開瀏覽器輸入地址信息http://localhost:8080/并運行
- 到此為止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)
- 說明:注意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)
看看表里的數(shù)據(jù)
看看運行結(jié)果:瀏覽器中訪問http://localhost:8080/Users
到此為止,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
- 至此 SpringBoot 整合 JSP 配置完成