一、 Spring Boot 概述
一)简介
- Spring Boot是基于Spring 框架开发的全新框架, 用来简化新Spring应用的初始化搭建和开发过程;
- Spring Boot 整合了许多框架和第三方库配置,几乎达到了“开箱”
二)SpringBoot优点
- 可快速构建独立的Spring应用
- 直接嵌入Tomcat、Jetty和Undertow服务器(无需部署WAR文件)
- 提供依赖启动器简化构建配置
- 极大程度的自动化配置Spring和第三方库
- 提供生产就绪功能
- 极少的代码生成和XML配置
二、Spring Boot 入门程序
- 创建一个 java 项目
- 在该项目下创建一个 Maven 项目
- 配置Spring Boot 的相关依赖
artifactid 的名字一定不能包含空格和中文符号
<?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
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SpringBoot_deom</artifactId>
// 千万不要有空格或者中文符号
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version> </parent>
<dependencies> <!-- 引入Web场景依赖启动器 --> <dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
- 创建一个启动类 命名为 SpringBootMain 这个类 要放在最外层
@SpringBootApplication: 表示该类为主程序启动类
在Main 方法中用 springApplication.run()方法来启动主程序类,
该方法的第一个参数为 该类的名称,第二个参数为 main 方法的参数
package com.zujiale.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootMain { public static void main(String[] args) { SpringApplication.run(SpringBootMain.class,args); } }
- 创建一个Controller 包 用来存放 HelloBoot 类
@RequestMapping("/boot/hello") public String hello(){ return "Hello Spring boot"; }
- 运行主程序 运行成功示例图:
- 访问地址: localhost:端口号/ 要访问的地址
三、SpringBoot 原理分析
一) Spring Boot 依赖管理
- Spring-boot-starter-parent 依赖: 通过标签对一些常用技术框架的依赖文件进行统一版本号的管理。
- Spring-boot-starter-web 依赖: 对Web 开发场景所需要的依赖文件进行了统一管理。
二) Spring Boot 自动配置
@SpringBootApplication注解标注类的main方法 是启动应用入口,它能够扫描Spring组件并自动配置SpringBoot,是注解的组合,
三个核心注解:
- @SpringBootConfiguration :
标注在类上,表示是一个SpringBoot的配置类,允许在上下文中注册额外的bean 或者导入其他配置项
- @EnableAutoConfiguration
开启自动配置功能,包含两个注解:
- @AutoConfigurationPackage: 与@CommponentScan 很类似,默认扫描路径就是主启动类下所在的包
- @Import: 本身就是把一个类导入到IOC容器中
AutoConfigurationImportSelector: 自动配置导入选择器,自动配置核心功能是通过此实现的
- @ComponentScan
自动加载并扫描符合条件的组件或者bean,将其定义加载到IOC容器中。 注解会默认扫描启动类所在的包以及包下的所有类,也可以自定义不扫描的bean
四、SpringBoot 配置文件
一)SpringBoot 全局配置文件
存放在 src/main/resource 目录或类路径的/config
同属性,properites 优先级高,不同属性,共同生效
- application.properties
- application.yaml
- application.yml (推荐使用)
五、SpringBoot 整合MyBatis
一) 创建对数据库和数据表
二) 配置依赖:
- Mysql:
mysql
mysql-connector-java
- MyBatis 依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.0
- 数据源类型配置, (阿里巴巴的Druid 数据源)
com.alibaba
druid-spring-boot-starter
1.1.16
三)编写配置文件: application.yml 进行数据库连接
其中 springboot 是数据库名称
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
username: root
password: root
四)创建 主启动类 SpringBootMaIN
@SpringBootApplication public class SpringBootMain { public static void main(String[] args) { SpringApplication.run(SpringBootMain.class,args); } }
五)创建 Controll、Service 以及Dao 层
- Controller 层
@Autowired private UserService userService; @RequestMapping("/login") public String Login(String username,String password){ if(userService.isUser(username,password)){ return "欢迎登录!!"; }else return "用户名和密码错误"; }
- Service 层
- impl 接口:
@Service public interface ServiceImpl { public Boolean isUser(String username,String password); }
@Service public class UserService implements ServiceImpl {
@Autowired private UserMapper userMapper;
@Override public Boolean isUser(String username, String password) {
User user=(User) userMapper.isUser(username,password);
System.out.println("user: "+user);
if(user!=null){ if(user.getUsername()!=null || user.getPassword() !=null){
return true;
}else {
return false;
}
}else
return false;
} }
- Dao 层
// UserMapper 接口
@Mapper public interface UserMapper { public User isUser(@Param("n") String username, @Param("p") String password); }
// UserMapper.xml 文件 在此文件中可进行增删改查
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC
"-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zjl.demo.dao.UserMapper">
<select id="isUser" resultType="com.zjl.demo.User.User"> select * from stu where username=#{n} and password=#{p} </select>
</mapper>
// 在 resources 创建对应的UserMapper 文件
** 注意:
- 文件的目录要与 接口文件路径一致
- .xml 文件要和接口名一致
- namespace 要与quanmul
- 登录页面: Login.html 可直接通过:http://localhost:8080/Login.html 访问到 通常放在 static目录下
也可是: /META-INF/resources /respirces /static /public 优先级从前往后排列
<!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8">
<title>登录</title> </head>
<body> <form action="/login" method="post">
<label>用户名:</label><input type="text" name="username" id="username" ><br>
<label >密码:</label><input type="text" name="password" id="password" ><br>
<button type="submit">登录</button>
</form>
</body>
</html>
静态资源访问
访问映射默认是 /**
注意:
一) 自定义静态资源访问前缀:
默认是无前缀的, 如果要求加,则需要在配置文件中进行配置:
spring:
mvc:
static-path-pattern: /static/**
此时,系统默认的静态资源目录就失效了