文章目录
SpringBoot
1 SpringBoot简介
-
Spring为应对互联网应用的要求(高可靠,高并发,负载均衡),推出了SpringBoot和微服务框架SpringCloud
虽然SpringBoot为微服务而生,但多用于单体应用,SpringCloud完全建立在SpringBoot之上
-
SpringBoot是基于Spring的框架,目的是快速搭建Spring环境
-
SpringBoot让我们的框架更加便捷化,自动化,简单化
-
Spring,SpringMVC,MyBatis都可以集成到SpringBoot中
-
SpringBoot是主要基于注解和编程式配置的实现,在SpringBoot中推荐使用properties或yml文件作为他的配置文件
-
SpringBoot的开发理念是习惯优于配置,SpringBoot默认不支持JSP,推荐使用HTML或模板引擎技术
-
SpringBoot中内置Web服务器,不需要搭建外部Web服务器,在SpringBoot开发中更加推荐搭建jar项目而非war项目
-
SpringBoot推出Starter组件(启动器,每个Starter即为一个应用,它将相关配置、开发包都集成在Starter中),开发人员在应用中只要引入相关的Starter即可完成配置,从而让开发人员从复杂而繁琐的配置中解脱出来,实现项目的快速搭建
2 SpringBoot的使用
2.1 新建一个基于Maven的项目
2.2 在pom中引入SpringBoot相关配方
-
引入springBoot父项目
springboot对spring相关版本进行规定,也对spring基础配置进行了约定
<!--引入springBoot父项目
springboot对spring相关版本进行规定
也对spring基础配置进行了约定
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
</parent>
-
添加spring-boot-starter-web依赖
引入后springboot支持web开发
里面包含了 Tomcat web服务器和Spring Boot本身等依赖
<!--引入spring-boot-starter-web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.3 编写SpringBoot的核心配置类(启动类)
spring启动类,核心配置类,必须在项目的根包下,Springboot组件扫描器会自动扫描当前类所在的包及其子包中的类
@SpringBootApplication
:SpringBoot启动类注解,加入该注解后,运行该类的main函数,Spring项目启动
该注解包含三个注解
@EnableAutoConfiguration
:启用Spring Boot的自动配置机制@ComponentScan
:启用@Component
扫描应用程序所在的软件包@SpringBootConfiguration
:配置类注解相当于spring的@Configuration
注解
/**
* spring启动类,核心配置类,必须在项目的根包下,Springboot组件扫描器会自动扫描当前类所在的包及其子包中的类
* @SpringBootApplication:SpringBoot启动类注解,加入该注解后,运行该类的main函数,Spring项目启动
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
//启动springboot环境
SpringApplication.run(Application.class,args);
}
}
2.4 检测是否成功
E:\JDK\bin\java.exe ...
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.9)
2023-02-25 14:49:46.465 INFO 2360 --- [ main] com.jiazhong.Application : Starting Application using Java 18.0.2.1 on 活着笑 with PID 2360 (D:\Java源码\Classjiazhong\springboot\target\classes started by 活着笑 in D:\Java源码\Classjiazhong\springboot)
2023-02-25 14:49:46.466 INFO 2360 --- [ main] com.jiazhong.Application : No active profile set, falling back to 1 default profile: "default"
2023-02-25 14:49:47.640 INFO 2360 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2023-02-25 14:49:47.648 INFO 2360 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-02-25 14:49:47.648 INFO 2360 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.71]
2023-02-25 14:49:47.906 INFO 2360 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-02-25 14:49:47.907 INFO 2360 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1292 ms
2023-02-25 14:49:48.210 INFO 2360 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2023-02-25 14:49:48.218 INFO 2360 --- [ main] com.jiazhong.Application : Started Application in 2.246 seconds (JVM running for 4.091)
2.5 添加控制器类检测是否配置成功
@RestController
@RequestMapping("/demo01")
public class DemoControl {
@RequestMapping("/demo01")
public String Demo01(){
return "ok";
}
}
- 浏览器输入:http://localhost:8080/demo01/demo01测试
2.6 yml和properties配置文件添加SpringBoot项目配置
- application.yml
# 服务端配置
server:
port: 80 # 设置服务器端口号
servlet:
context-path: /springboot-project # 设置项目上下文路径(访问根路径)
# 配置日志
logging:
level:
root: info
web: trace
- 或application.properties
# 设置服务器端口号
server.port=80
# 设置项目上下文路径(访问根路径)
server.servlet.context-path=/springboot-project
#配置日志
logging.level.root=info
logging.level.web=trace
2.7 编写静态网页
- 静态网页添加位置,在
resources
文件夹下新建一个static
文件夹,项目中的静态内容都添加到该文件夹下
3 SpringBoot综合应用小Demo
3.1 搭建相关环境
-
配置SpringBoot环境
-
引入SpringBoot父项目
Springboot对spring相关版本进行规定,也对spring基础配置进行了约定
<!--引入springBoot父项目 父项目对spring相关版本进行规定 也对spring基础配置进行了约定 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.9</version> </parent>
-
引入相关依赖
-
添加spring-boot-starter-web依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
添加热部署
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
-
-
核心配置类
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
-
-
整合mybatis
-
引入mybatis-spring-boot-starter依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency>
-
引入mysql依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency>
-
引入durid
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.15</version> </dependency>
-
-
引入其他依赖
-
fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.7</version> </dependency>
-
pagehelper
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.6</version> </dependency>
-
lombok
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
-
-
配置application.yml
#服务器配置 server: port: 80 # 配置日志 logging: level: root: info #设置根级别为info级 com.jiazhong.mapper: trace #设置mapper包级别为trance(跟踪级别) web: trace #设置web包级别为trance(跟踪级别) #配置数据库 spring: #数据源配置 datasource: #连接属性配置 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: root #连接池配置 druid: max-active: 100 min-idle: 10 initial-size: 10 max-wait: 1000 mybatis: mapper-locations: /mapper/**
3.2 model层
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
将Java对象转化为JSON数据指定的日期格式
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
private Integer userId;
private String username;
private Integer sex;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//将Java对象转化为JSON数据指定的日期格式
private Date date;
private Integer age;
private String address;
}
3.3 controller层
@RequiredArgsConstructor
: lombok提供用于为final属性赋值的构造器
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/selectUser")
public List<User> selectUser(){
return userService.selectUser();
}
@RequestMapping("/selectUserByUserId")
public User selectUserByUserId(Integer userId) {
return userService.selectUserByUserId(userId);
}
@RequestMapping("/addUser")
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
@RequestMapping("/deleteUserById")
public void deleteUserById(Integer... userIds) {
userService.deleteUserById(userIds);
}
@RequestMapping("/updateUserById")
public void updateUserById(@RequestBody User user) {
userService.updateUserById(user);
}
}
3.4 service层
- UserService接口
public interface UserService {
List<User> selectUser();
User selectUserByUserId(Integer userId);
void addUser(User user);
void deleteUserById( Integer... userIds);
void updateUserById(User user);
}
- UserServiceImpl
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
@Override
public List<User> selectUser() {
return userMapper.selectUser();
}
@Override
public User selectUserByUserId(Integer userId) {
return userMapper.selectUserByUserId(userId);
}
@Override
public void addUser(User user) {
userMapper.addUser(user);
}
@Override
public void deleteUserById(Integer... userIds) {
userMapper.deleteUserById(userIds);
}
@Override
public void updateUserById(User user) {
userMapper.updateUserById(user);
}
}
3.5 mapper层
- UserMapper接口
@Repository
public interface UserMapper {
//查询所有用户
@Select("select * from user")
public List<User> selectUser();
//根据id查询单个用户
@Select("select * from user where userId=#{userId}")
public User selectUserByUserId(Integer userId);
//添加用户
@Insert("insert into user values(default,#{username},#{sex},#{date},#{age},#{address})")
public void addUser(User user);
//根据id删除用户
void deleteUserById(@Param("userIds") Integer... userIds);
//根据id修改用户
@Update("update user set username=#{username},sex=#{sex},date=#{date},age=#{age},address=#{address} where userId=#{userId}")
void updateUserById(User user);
}
- 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 namespace="com.jiazhong.mapper.UserMapper">
<delete id="deleteUserById">
<if test="userIds.length!=0">
delete from user
<where>
userId in
<foreach collection="userIds" open="(" close=")" separator="," item="userId">
#{userId}
</foreach>
</where>
</if>
</delete>
</mapper>
SpringBoot相关配置
- 添加SpringBoot开发调试工具插件,该工具可以实现项目的热部署
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
设置里设置编译器
进行启动配置
- 学习来自于西安加中实训