• SpringBoot 创建和使用


    1. 初识 SpringBoot

    Spring 的诞生是为了简化 java 程序的开发 , 而Spring Boot 的诞生是为了简化 Spring 程序开发.

    Spring boot 翻译以下就是"脚手架" , 有了脚手架就可以快速的开发和使用 Spring .


    2. Spring Boot 优点

    • 快速的集成框架: 快速添加外部的 jar 包 , 秒级集成各种框架.
    • 内置 web 框架 , 无需配置 Tomcat 等 web 容器 , 直接运行和部署程序
    • 易于部署:Spring Boot可以打包成可执行的 jar 包或 war 包,方便部署到各种应用服务器上 ,不依赖任何外部容器
    • 抛弃繁琐的 XML , 使用注解和配置的方式进行开发.
    • 支持更多的监控指标 , 可直接观察到项目的运行情况.
    • 易于测试:Spring Boot提供了一些测试工具,可以方便地进行单元测试和集成测试。

    springBoot框架的本质上就是通过组合注解的方式实现了诸多spring注解的组合,从而极大地简化了spring框架本身的繁琐配置,实现快速的集成和开发。


    3. Spring Boot 项目创建

    3.1 使用 Idea 创建

    1.专业版无需任何插件直接创建 Spring Boot 项目

    2.社区版需要安装插件

    社区版的插件经过多次的迭代 , 已经成熟稳定和专业版相差无几 , 因此我们使用社区版+插件的模式.

    Tips: 此插件只有在 2021.x 版本是免费的.

    安装 Spring Boot Helper 插件

    image-20230417191657938

    下载成功之后 , 创建新项目时就会出现 Spring Initializr.

    Tips: 为了更好的兼容 , 建议使用 jdk 1.8 , 默认创建项目的源地址.

    image-20230417193533136

    参数设置中项目类型jdk 版本必须修改 , 其余按自己需求.

    image-20230417194956060

    选择 Spring Boot 版本(3.xx的 jdk 版本必须大于17) , 以及添加项目依赖(无需考虑依赖版本号).

    image-20230417195521219

    创建完毕之后 , 在启动类 DemoApplication 中 , 运行 main 方法 , 成功后说明项目创建完毕.


    3.2 网页版创建

    [访问网站](Spring Initializr)

    配置与 Idea 创建一致.

    image-20230417220253752

    点击创建之后 , 会自动下载一个文件包 , 需要我们手动导入 Idea. 相当于一个备份文件 , 如果有时 Spring 网站无法访问 , 可以直接导入该包.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VOuZzvSU-1683703469610)(null)]

    在 Idea 中 open 该 file 即可.

    image-20230417221210623


    3.3 项目构成

    1) 删除无关文件

    创建好项目之后以下几个文件可以删除

    • .mvn 中的文件需要使用 maven 命令操作 , 而 Idea 右侧自带可视化的 Maven 窗口 , 因此可以删除.

    image-20230417222231750

    • HELP.md 是一个自带的帮助文档 , 可以直接删除.

    • mvnw 和 mvnwcmd 同样是使用 Maven 命令操作打包 , 可以直接删除.

    image-20230417222253139

    2) SpringBoot 目录说明

    3) 运行项目输出Helloworld

    在启动类同级目录或子级目录中创建 testController 类

    image-20230418170432994

    设置 @Controller 修饰类 , 将该类加载到 Spring 容器中

    @RequestMaping 注册一个路由 , 相当于 Servlet 中的 @WebServlert(“/url”)

    @Controller//当前类加载到 spring 容器中
    public class testController {
        //注册一个路由
        @RequestMapping("/sayHi") // = @WebServlet("/url")
        public String sayHi(){
            return "Hello world";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    启动程序后抛 404 异常.

    image-20230418171448366

    默认情况下 , 浏览器以为返回一个名字为 Hello world 的静态页面 , 而不是字符串.

    因此加上 @ResponseBody 就告诉浏览器 , 当前类中的所有方法返回的都是非静态页面的数据.

    @Controller//当前类加载到 spring 容器中
    @ResponseBody
    public class testController {
        //注册一个路由
        @RequestMapping("/sayHi") // = @WebServlet("/url")
        public String sayHi(){
            return "Hello world";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    结果如下说明访问成功

    image-20230418171323064

    Tips: 如果出现 @RequestMapping 和 @ResponseBody 报错 , 说明没有导入 web 依赖.

    <dependency>
       <groupId>org.springframework.bootgroupId>
       <artifactId>spring-boot-starter-webartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    解决方法:

    1. Maven仓库中拉取依赖
    2. 安装插件 , 手动导入.

    4. Spring Boot 设计理念

    Spring Boot 设计理念: 约定大于配置

    既想高效 , 又想让用户简便.

    Spring Boot 无需配置 Bean 的扫描路径 , 因为 Spring Boot 提供了一些默认的 Bean 扫描路径,如 @SpringBootApplication 注解默认会扫描当前包及其子包下的所有 Bean。如果需要自定义 Bean 扫描路径,也可以通过 @ComponentScan 注解来实现。总之,Spring Boot 的自动配置机制使得开发者可以更加专注于业务逻辑的实现,而不需要过多关注配置问题。

    具体来说,SpringBoot框架在设计时,为了简化配置,采用了如下的约定:

    1. 默认配置:SpringBoot框架会根据应用程序的类型和依赖库的配置,自动配置一些默认的参数和行为,如默认端口号、默认数据库连接池、默认日志等。
    2. 自动配置:SpringBoot框架会根据应用程序的类路径和依赖库的配置,自动配置一些常见的组件和功能,如Web组件、数据访问组件、安全组件等。
    3. 约定优于配置:SpringBoot框架在设计时,采用了一些约定,如默认的目录结构、默认的命名规则等,使得开发人员可以不用进行过多的配置,就能快速搭建一个可运行的应用程序。

    总的来说,SpringBoot约定大于配置的设计思想,可以让开发人员更加专注于业务逻辑的实现,减少了配置的复杂性和细节,提高了开发效率和可维护性。

  • 相关阅读:
    [附源码]java毕业设计疫情环境下的酒店管理系统
    OpenSSH漏洞(CVE-2024-6387)
    在 .NET MAUI 中如何更好地自定义控件
    华为分析&联运活动,助您提升游戏总体付费
    一篇学会JavaIO流(输入输出流)
    codeArts Snap:辅助你的编程神器
    【初识Linux】Linux环境配置、Linux的基本指令 一
    时序预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络时间序列预测
    MathType2024最新word公式编辑器
    信号与槽的连接方式
  • 原文地址:https://blog.csdn.net/liu_xuixui/article/details/130602002