SpringBoot 创建和使用

news/2024/10/18 23:32:43/

文章目录

    • 1. 初识 SpringBoot
    • 2. Spring Boot 优点
    • 3. Spring Boot 项目创建
      • 3.1 使用 Idea 创建
      • 3.2 网页版创建
      • 3.3 项目构成
        • 1) 删除无关文件
        • 2) SpringBoot 目录说明
        • 3) 运行项目输出Helloworld
    • 4. Spring Boot 设计理念

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";}
}

启动程序后抛 404 异常.

image-20230418171448366

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

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

@Controller//当前类加载到 spring 容器中
@ResponseBody
public class testController {//注册一个路由@RequestMapping("/sayHi") // = @WebServlet("/url")public String sayHi(){return "Hello world";}
}

结果如下说明访问成功

image-20230418171323064

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

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

解决方法:

  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约定大于配置的设计思想,可以让开发人员更加专注于业务逻辑的实现,减少了配置的复杂性和细节,提高了开发效率和可维护性。


http://www.ppmy.cn/news/107194.html

相关文章

【T6/T3】根据畅捷通T6/T3账套备份文件判断软件的版本

【问题需求】 当畅捷通T6/T3软件只有正常的账套备份文件的时候&#xff0c; 通过账套备份文件判断软件版本&#xff0c; 进而安装软件恢复数据。 【解决方法】 【畅捷通T6】 找到T6的备份文件&#xff0c; 用记事本打开【UfErpAct.lst】文件。 查看【VersionbatchflagForUFDAT…

Linux中与命名空间相关的内核数据结构

【摘要】本文详细讲述了在Linux内核中与命名空间概念相关的内核数据结构及其内在联系。 十、命名空间(namespace)相关数据结构 Linux内核通过数据结构之间互相的连接关系&#xff0c;形成了一套虚拟的命名空间的虚拟化概念。 10.1 struct pid_namespace \linux-2.6.32.63\i…

为kong网关添加key-auth插件实现安全认证

官方指导文档&#xff1a;https://docs.konghq.com/gateway/latest/get-started/key-authentication/ 一、新建一个用户 这里我们新建一个usernameluka的用户 [rootmin ~]# curl -i -X POST http://localhost:8001/consumers/ \ > --data usernameluka HTTP/1.1 201 Cr…

年营收超1700亿元 中国机器人行业走向更多场景

文 | BFT机器人 中国已经连续九年成为全球最大的工业机器人应用国&#xff0c;同时还是全球机器人第一生产大国&#xff0c;2022年机器人全行业营收超过1700亿元(人民币&#xff0c;下同)。随着《“机器人”应用行动实施方案》的落地&#xff0c;机器人应用的深度和广度加速扩…

moment获取指定日期的周x,某月最后一天

安装了moment插件的情况下&#xff0c;使用moment处理时间&#xff0c;原生的Date对象是另一回事。 非官方中文网-文档 1 当前时间 moment() 2 格式化时间 YYYY/yyyy 四位数年份 MM 两位数月份 DD 两位数天 moment().format("YYYY MM DD") 2023 05 26 moment().…

【操作系统】04.设备管理

IO软件层次 IO设备 机械部件 分类 设备控制器 寄存器编址 IO控制方式 程序直接控制方式 中断驱动方式 DMA方式 通道控制方式 中断处理程序 设备驱动程序 设备独立性软件 IO调度 设备保护 设备分配与回收 静态分配和动态分配 数据结构 设备分配步骤 改进 缓冲区管理 缓冲区的…

前端面试:iframe 的优缺点

优点 作为一个完全独立的窗口去运行另一个页面&#xff0c;而不用去担心污染。解决加载缓慢的第三方内容如图标和广告等的加载问题并行的加载资源文件 缺点 占用同源连接数&#xff0c;对于每个浏览器&#xff0c;都会去控制并发的同源的连接数。比如说chrome的连接数是8&#…

c语言编程练习题:7-76 计算分段函数[3]

#include <stdio.h> int main(){double x;double f;if (scanf("%lf",&x)!EOF){if (x10.0){f0.1;}else{fx;}printf("f(%.1f) %.1f",x,f);}else{printf("intput x wrong");}return 0; }代码来自&#xff1a;https://yunjinqi.top/artic…