Spring Boot入门指南:从零开始构建Web应用程序

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于Spring Boot的相关操作吧 

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

 一.Spring Boot是什么

二.为什么要使用Spring Boot

三.怎么在IDEA中使用Spring Boot

1.创建新的Spring Boot 项目:

2.编写Spring Boot 应用程序:

项目结构说明

properties文件转换成yml文件

3.运行Spring Boot 应用程序:

四. Spring Boot 集成

1.集成JDBC

2.集成Mybatis

Mybatis逆向生成代码

配置数据源

逆向生成代码

测试

​3.集成Pagehelper

4.集成Druid数据库连接池

5.集成Log日志

五.易错以及注意点总结

 1.代码编写位置

​2.配置文件的格式选择

3.mapper所在包必须在启动类中开启扫描

4.配置数据源出现的时区错误


 一.Spring Boot是什么

        Spring Boot是一个基于Spring框架的开源应用程序框架,它大大简化了Spring应用程序的开发过程。Spring Boot提供了一种快速且简单的方式来创建基于Spring的应用程序,同时也提供了许多开箱即用的功能,包括嵌入式Web服务器、安全性、指标监控、外部化配置等。由于Spring Boot的高度集成和自动配置,开发人员可以更加专注于业务逻辑的开发,从而提高了开发效率

        Spring Boot还支持许多插件和扩展,使得开发人员可以方便地集成各种第三方库和工具,例如JPA、Spring Data、Thymeleaf等。此外,Spring Boot还支持构建微服务应用程序,开发人员可以使用Spring Cloud框架来实现微服务的注册和发现、负载均衡、断路器等功能。

        总之,Spring Boot是一个非常方便、易用且强大的开发框架,使得开发人员可以更加专注于业务逻辑的实现,而不用花费大量时间和精力在繁琐的配置和集成上

❗❗注意❗❗

SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具

二.为什么要使用Spring Boot

  1. 快速开发Spring Boot提供了大量的自动配置功能,避免了开发人员手动配置繁琐的XML文件和注解,从而缩短了开发时间。

  2. 简化配置:Spring Boot支持外部化配置,可以将配置信息放在外部文件中,减少了代码中硬编码的情况,也方便了应用程序的部署和管理。

  3. 易于维护:Spring Boot的模块化结构,使得应用程序的不同部分之间的耦合度降低,易于维护和扩展。

  4. 丰富的插件支持:Spring Boot支持很多插件和扩展,例如JPA、Spring Data、Thymeleaf等,可以方便地集成其他第三方库和工具。

  5. 高度集成:Spring Boot已经集成了许多常用的框架和组件,包括Spring MVC、Spring Data、Hibernate等,可以快速搭建一个完整的应用程序。

  6. 容易部署:Spring Boot支持嵌入式Web服务器,可以直接将应用程序打包成一个可运行的Jar文件,方便部署和运行。

三.怎么在IDEA中使用Spring Boot

1.创建新的Spring Boot 项目

  • 打开IntelliJ IDEA,创建一个Moudule
  • 在左侧菜单中选择“Spring Initializr”,然后点击“Next”。
    • 注意:我们点击NEXT之后可能会出现这个错误,当我出现这个错误的时候我先是大概看了一下这个错误是什么意思,我理解的大概意思就是这个URL有问题,起初我以为是我的URL路径写错了,我便重新去复制了一份url地址,结果还是不行。于是我就去网上找寻方法,有的说直接把https改成htt就行了,但是我试了之后还是不行,于是我就在Setting中的HTTP Proxy中配置我的URL了,但是发现还是不行,于是我便直接用了spring boot的网址进行下载了...【阿里源】,如果以后研究出来了,会单独发布一篇博文讲解的
  • 在弹出窗口中选择项目的基本信息,比如Group、Artifact等,然后点击“Next”
  • 在接下来的页面中选择需要使用的依赖,比如Spring Web、Spring Data JPA等,然后点击“Next”。

  • 最后指定项目的名称和位置,点击“Finish”即可创建Spring Boot项目

2.编写Spring Boot 应用程序

  • 在项目结构中,可以看到自动生成的Spring Boot应用程序的基本结构,包括主应用程序类(通常带有@SpringBootApplication注解)、控制器类、服务类等。
    • 项目结构说明

  • 可以在src/main/java目录下编写自己的Java类,例如控制器类、服务类等。
  • src/main/resources目录下编写配置文件,例如application.propertiesapplication.yml
    • properties文件转换成yml文件

      • spring boot中默认的配置文件的格式是properties文件,这个文件的格式不够清晰明了,一旦这个文件中的内容多了,我们想要寻找指定的配置会很麻烦,所以我们可以把它转换成yml文件,我们需要下载一个插件:Convert YAML and Properties File
        • 进入到properties文件中,右击》选择插件
          • ​​​​​​​

3.运行Spring Boot 应用程序

  • 找到主应用程序类,右键点击该类,选择“Run 'Application'”即可运行Spring Boot应用程序。也可以使用快捷键Shift + F10运行应用程序。
  •  我们上面下载了一个Mybatis的插件,这个插件需要有数据源才行,我们这里先试着让项目跑起来,所以我们现在pom.xml中将mybatis的依赖注释掉
    • 这时候就可以运行项目了

四. Spring Boot 集成

1.集成JDBC

引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
</dependency>

修改application.yml文件

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf8
    username: 用户名
    password: 密码

2.集成Mybatis

引入依赖

 <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>

修改application.yml文件

#mybatis配置
mybatis:
    #配置SQL映射文件路径
    mapper-locations: classpath:mapper/*.xml
    #配置别名
    type-aliases-package: com.zking.SpringBoot.model

在启动类中添加@MapperScan({"com.zking.SpringBoot.mapper"})注解

package com.wh.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
//@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@MapperScan({"com.zking.SpringBoot.mapper"})
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

Mybatis逆向生成代码

配置数据源

以上我们已经整合了JDBC以及Mybatis,现在我们来配置一下数据源

如果我们没有下载相应的驱动依赖便会弹出一个警告弹窗,我们在这里选择download就行

这里出现了一个错误,表示JDBC驱动程序无法识别MySQL服务器时区设置

所以我们直接在URL中添加一个时区的配置就好啦

serverTimezone=UTC

逆向生成代码

测试

数据便可以显示出来了

3.集成Pagehelper

引入依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.6</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

修改application.yml文件

#pagehelper分页插件配置
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

service以及serviceimpl中的方法都需要传入pagebean这个参数,并且在serviceimpl的方法上需要使用自定义的分页注解

controller层

package com.wh.springboot.controller;
import com.github.pagehelper.PageHelper;
import com.wh.springboot.mapper.TBookMapper;
import com.wh.springboot.page.PageAnnotation;
import com.wh.springboot.page.PageBean;
import com.wh.springboot.service.IBookService;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * @author是辉辉啦
 * @create 2023-12-12-14:44
 */
@RestController
@RequestMapping("/book")
public class BookController {
@Autowired
private IBookService bookService;
@RequestMapping("/list")

public Object hello(PageBean pageBean){
    PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
 return bookService.select(pageBean);
    }
}

分页的自定义注解

package com.wh.springboot.page;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PageAnnotation {
}

分页切面类

package com.wh.springboot.page;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class PageAspect {

    @Pointcut("@annotation(PageAnnotation)")
    public void cut() {
    }

    @Around("cut()")
    public Object aroundHandler(ProceedingJoinPoint point) throws Throwable {
        Object[] args = point.getArgs();
        PageBean pageBean = new PageBean().setOpen(false);
        for (Object arg : args) {
            if (arg instanceof PageBean) pageBean = (PageBean) arg;
        }
        PageHelper.startPage(pageBean.getPage(), pageBean.getRows(), pageBean.isOpen());
        Object val = point.proceed();
        if (pageBean.isOpen()) {
            Page<?> page = (Page<?>) val;
            pageBean.setTotal(page.getTotal());
        }
        return val;
    }

}

PageBean

package com.wh.springboot.page;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class PageBean {

    private Integer page = 1;
    private Integer rows = 5;
    private Long total = 0L;
    private boolean open = true;

    public int start() {
        return (page - 1) * rows;
    }

    public int previous() {
        return Math.max(this.page - 1, 1);
    }

    public int next() {
        return Math.min(this.page + 1, maxPage());
    }

    public int maxPage() {
        return (int) Math.ceil(this.total.intValue() / (this.rows * 1.0));
    }

}

如果修改了依赖中的版本还是不可以的话,那就退出IDEA再进来一次就好啦

这样便可以有分页效果了

4.集成Druid数据库连接池

引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.15</version>
</dependency>

修改application.yml文件

druid:
      #2.连接池配置
      #初始化连接池的连接数量 大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      #配置获取连接等待超时的时间
      max-wait: 60000
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 30000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: true
      test-on-return: false
      # 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filter:
        stat:
          merge-sql: true
          slow-sql-millis: 5000
      #3.基础监控配置
      web-stat-filter:
        enabled: true
        url-pattern: /*
        #设置不统计哪些URL
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        session-stat-enable: true
        session-stat-max-count: 100
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        reset-enable: true
        #设置监控页面的登录名和密码
        login-username: admin
        login-password: admin
        allow: 127.0.0.1
        #deny: 192.168.1.100

进入到这个页面之前需要登录,登录的密码以及用户名是自己在yml文件中配置的

5.集成Log日志

修改application.yml文件

#log日志配置
logging:
    level:
        #指定项目目录输入日志信息
        com.wh.springboot.mapper: debug

五.易错以及注意点总结

 1.代码编写位置

所有编写的代码都必须写在与启动类同级的位置中,不然的话,你写的代码它是无效的,因为它是无法被扫描的

2.配置文件的格式选择

建议使用yml文件的格式,因为yml文件的格式更加清晰,我们能够一眼看出来各种配置信息的层级关系

properties的文件格式

yml的文件格式

大家可以自行观看上面两中文件的格式,对比下来也不难发现,yml文件的层级更加的清晰

3.mapper所在包必须在启动类中开启扫描

@MapperScan({"com.wh.springboot.mapper"})

如果没有开启扫描,则无法启动项目

4.配置数据源出现的时区错误

出现的错误👇👇

Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.

我们只需要添加serverTimezone=UTC这个时区的设置便可以啦

好啦,今天的分享就到这了,希望能够帮到你呢!😊dede

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
springboot学习资料 一、 Spring介绍 1 1.1、SpringBoot简介 1 1.2、系统要求: 1 二、快速入门 1 2.1、创建一个Maven工程 1 2.2、pom文件引入依赖 2 2.3、编写HelloWorld服务 2 2.4、@RestController 3 2.5、@EnableAutoConfiguration 3 2.6 SpringApplication.run(HelloController.class, args); 3 @SpringbootApplication 3 2.7、SpringBoot启动方式1 4 2.8、SpringBoot启动方式2 4 三、 Web开发 5 3.1、静态资源访问 5 3.2、全局捕获异常 5 3.3、渲染Web页面 6 3.4、使用Freemarker模板引擎渲染web视图 6 3.4.1、pom文件引入: 6 3.4.2、后台代码 6 3.4.3、前台代码 7 3.4.4、Freemarker其他用法 7 3.4.5、Freemarker配置 8 3.5、使用JSP渲染Web视图 8 3.5.1、pom文件引入以下依赖 8 3.5.2、在application.properties创建以下配置 9 3.5.3、后台代码 9 四、 数据访问 9 4.1、springboot整合使用JdbcTemplate 9 4.2、springboot整合使用mybatis 9 4.3、springboot整合使用springjpa 9 4.4、springboot整合多数据源 9 五、 事物管理 9 5.1.1springboot整合事物管理 9 5.1.2SpringBoot分布式事物管理 9 六、 日志管理 9 6.1使用log4j记录日志 9 6.2使用AOP统一处理Web请求日志 9 七、 缓存支持 9 7.1注解配置与EhCache使用 9 使用Redis做集中式缓存 9 八、 其他内容 9 8.1、使用@Scheduled创建定时任务 9 8.2、使用@Async实现异步调用 9 8.3、自定义参数 9 8.4、多环境配置 9 8.5、修改端口号 9 8.6、SpringBoot yml 使用 9 8.7、发布打包 9
文档内容 一、 Spring介绍 1 1.1、SpringBoot简介 1 1.2、系统要求: 1 1.3、SpringBootSpringMVC区别 1 1.4、SpringBootSpringCloud区别 2 1.5常见错误 2 二、快速入门 2 2.1、创建一个Maven工程 2 2.2、pom文件引入依赖 3 2.3、编写HelloWorld服务 3 2.4、@RestController 4 2.5、@EnableAutoConfiguration 4 2.6 SpringApplication.run(HelloController.class, args); 4 2.7、SpringBoot启动方式1 4 2.8、SpringBoot启动方式2 4 2.9、SpringBoot启动方式3 5 三、 Web开发 5 3.1、静态资源访问 5 3.2、渲染Web页面 5 3.3、使用Freemarker模板引擎渲染web视图 6 3.3.1、pom文件引入: 6 3.3.2、后台代码 6 3.3.3、前台代码 6 3.3.4、Freemarker其他用法 7 3.3.5、Freemarker配置 8 3.4、使用JSP渲染Web视图 8 3.4.1、pom文件引入以下依赖 8 3.4.2、在application.properties创建以下配置 9 3.4.3、后台代码 9 3.5、全局捕获异常 10 四、 数据访问 10 4.1、springboot整合使用JdbcTemplate 10 4.2、springboot整合使用mybatis 12 4.3、springboot整合使用springjpa 18 4.4、springboot整合多数据源 19 五、 事物管理 25 5.1.1SpringBoot整合事物管理 25 5.1.2SpringBoot分布式事物管理 25 六、 日志管理 30 6.1使用log4j记录日志 30 6.2使用AOP统一处理Web请求日志 32 6.3Spring Boot集成lombok让代码更简洁 33 七、 缓存支持 35 7.1注解配置与EhCache使用 35 7.2使用Redis集成缓存 37 八、 热部署 37 8.1 什么是热部署 37 8.2 项目演示案例 37 8.3 热部署原理 37 8.4 Devtools依赖 38 8.5 Devtools原理 38 九、 监控管理 38 Actuator监控应用 38 Maven依赖 38 YML配置 39 Actuator访问路径 40 Admin-UI分布式微服务监控中心 40 Admin-UI-Server 40 Admin-UI-Client 41 十、 性能优化 43 组件自动扫描带来的问题 43 将Servlet容器变成Undertow 44 SpringBoot JVM参数调优 44 十一、 2.0版本新特性 45 以Java 8 为基准 45 内嵌容器包结构调整 45 Servlet-specific 的server properties调整 45 Actuator 默认映射 46 Spring Loaded不再支持 46 支持Quartz Scheduler 46 OAuth 2.0 支持 46 支持Spring WebFlux 46 版本要求 46 十二、 其他内容 47 12.1、使用@Scheduled创建定时任务 47 12.2、使用@Async实现异步调用 47 12.3、自定义参数 49 12.4、多环境配置 50 12.5、修改端口号 50 12.6、SpringBoot yml 使用 50 12.7、SpringBoot整合拦截器 51 12.8、发布打包 52
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是辉辉啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值