Java小记-SpringBoot(超级无敌认真好用,万字收藏篇!!!!)

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 搭建相关环境

  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);
          }
      }
      
  2. 整合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>
      
  3. 引入其他依赖

    • 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>
      
  4. 配置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>

设置里设置编译器

在这里插入图片描述

进行启动配置
在这里插入图片描述


  • 学习来自于西安加中实训

猜你喜欢

转载自blog.csdn.net/woschengxuyuan/article/details/129222115