Spring Boot入门&整合常用框架整理丨深度好文

2023-11-19

一、SpringBoot简介

1.1 原有Spring优缺点分析

1.1.1 Spring的优点分析

Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

1.1.2 Spring的缺点分析

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。

所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。

除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

1.2 SpringBoot的概述

1.2.1 SpringBoot解决上述Spring的缺点

SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

1.2.2 SpringBoot的特点

为基于Spring的开发提供更快的入门体验

开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等

SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式

1.2.3 SpringBoot的核心功能

起步依赖

起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

自动配置

Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

注意:起步依赖和自动配置的原理剖析会在第三章《SpringBoot原理分析》进行详细讲解

二、SpringBoot快速入门

2.1 代码实现

2.1.1 创建Maven工程

使用idea工具创建一个maven工程,该工程为普通的java工程即可

2.1.2 添加SpringBoot的启动器

SpringBoot要求,项目要继承SpringBoot的起步依赖spring-boot-starter-parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
</parent>

指定使用的jdk版本

<properties>
    <java.version>1.8</java.version>
</properties>

SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖

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

2.1.3 编写SpringBoot引导类

要通过SpringBoot提供的引导类起步SpringBoot才可以进行访问

package com.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MySpringBootApplication {
	public static void main(String[] args) {
		SpringApplication.run(MySpringBootApplication.class);
	}
}

2.1.4 编写Controller

在引导类MySpringBootApplication同级包或者子级包中创建QuickStartController

package com.test.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class QuickStartController {
	@RequestMapping("/quick")
	    @ResponseBody
	    public String quick(){
		return "springboot 访问成功!";
	}
}

2.1.5 测试

  • 启动方式一:启动MySpringBootApplication类中的main方法
  • 启动方式二:使用Maven命令spring-boot:run执行即可

控制台打印日志如下:

通过日志发现,Tomcat started on port(s): 8080 (http) with context path ‘’

tomcat已经起步,端口监听8080,web应用的虚拟工程名称为空

打开浏览器访问url地址为:http://localhost:8080/quick

三、SpringBoot深度体验

3.1 整合Spring Data JPA

3.1.1 添加Spring Data JPA的启动器

<!-- springBoot JPA的起步依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

3.1.2 添加数据库驱动依赖

<!-- MySQL连接驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

3.1.3创建数据库

创建一个数据库,并在数据库中创建user表

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三');
INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot入门&整合常用框架整理丨深度好文 的相关文章

随机推荐

  • 开发工具链-DevOps_阿里云云效

    简介 阿里云效官网 DevOps Development和Operations的组合词 是一组过程 方法与系统的统称 用于促进开发 应用程序 软件工程 技术运营和质量保障 QA 部门之间的沟通 协作与整合 百度百科 快速开始 1 云效首页
  • 给导航网站新增了一些免费影视网站,欢迎体验

    使用时建议使用火狐浏览器 并安装广告屏蔽插件 这样就没有广告 视频内的广告千万不要相信 其余安心食用 地理导航 地理上网从这里开始
  • VS Code Remote Development

    配置VSCode Remote Development 1 Ubuntu 上启用 SSH 1 打开终端 并且安装openssh server软件包 sudo apt update sudo apt install openssh serve
  • 图像处理岗位面试题搜罗汇总

    传统图像处理部分 图像处理基础知识 彩色图像 灰度图像 二值图像和索引图像区别 彩色图像 RGB图像 灰度图像 0 255像素值 二值图像 0和1 用于掩膜图像 索引图像 在灰度图像中 自定义调色板 自定义输出256种颜色值 常用的图像空间
  • java 泛型 作用与定义

    1 泛型方法的定义和使用 public static void main String args throws ClassNotFoundException String str get 哈士奇 world System out print
  • Mac显示放大镜

    设置快捷键 系统默认是不开启热键的 如果需要设置 操作如下 设置 system preferences gt accessibility 在左侧找到room 进入配置窗口 按如上配置后 按住option键 然后两指向上就可以放大 两指向下就
  • 这座城市引领大模型浪潮!80余个AI大模型,一半集结在这里!

    刚刚结束的2023全球数字经济大会上 人工智能高峰论坛掀起了一股热潮 大型模型的发展和应用成为了会议的亮点 而作为这次盛会的主办方之一 北京市已经成为了这场人工智能革命的领先力量 作为人工智能产业的引领者 北京不负众望 国内已有80余个大型
  • Redis系列(七)Redis主从、哨兵、cluster集群方案解析

    文章目录 Redis主从 主从数据同步 同步 建立连接 完整重同步 全量同步 触发条件 部分重同步 增量同步 复制偏移量 offset 复制积压缓冲区 replication backlog buffer 部分重同步执行过程 命令传播 指令
  • 机器视觉最火应用领域

    1 图像和视频识别 人工神经网络领域最重要的进展之一出自 ImageNet ImageNet收集了 1400 万标签图像并于2009年发布 ImageNet挑战赛要求参赛者设计一个能够跟人类一样对照片进行分类的算法 但一直没有出现获胜者 直
  • Python图像处理 PIL中convert(mode)函数详解

    模式分类 PIL有九种不同模式 1 L P RGB RGBA CMYK YCbCr I F mode 1 代码示例 为二值图像 非黑即白 每个像素用8个bit表示 0表示黑 255表示白 from PIL import Image 读取一张
  • python快乐数字怎么表达_Python中的快乐数字

    在这里 我们将看到如何检测数字n是否为一个快乐数字 因此 快乐数字是一个数字 其中以任何正整数开头的数字均用其数字的平方和代替 该过程将重复进行直到其变为1 否则它将无休止地循环循环 这些数字 当找到1时 将成为快乐数字 假设数字为19 则
  • 类加载机制+双亲委派机制(通俗易懂版)

    1 类加载机制 一个类从加载到使用到卸载一共经过了5个步骤 加载 gt 连接 gt 初始化 其中连接分为验证 准备 解析三个阶段 1 加载 那么什么时候会将 class文件加载到jvm中 就是在你使用这个类的时候 验证 准备 解析 2 验证
  • 【计算机视觉】CLIP:语言-图像表示之间的桥梁

    文章目录 一 前言 二 架构 三 应用 3 1 图像分类 3 2 图像描述 3 3 文本到图像 四 总结 一 前言 最近GPT4的火爆覆盖了一个新闻 midjourney v5发布 DALLE2 midjourney都可以从文本中生成图像
  • 生成随机数

    目录 1 生成随机数sand 函数 2 srand 函数设置生成随机数 3 时间戳 4 如何生成规定位数的随机数呢 1 100 5 猜数字对生成随机数的应用 1 生成随机数sand 函数 这个函数会返回一个从0到RAND MAX的随机整数
  • 线性回归误差项方差的估计

    线性回归误差项方差的估计 摘要 线性回归误差项概念的回顾 残差平方和 residual sum of squares 残差平方和的期望 实验验证 参考文献 摘要 之前在文章线性回归系数的几个性质 中 我们证明了线性回归系数项的几个性质 在这
  • 微信小程序中组件间通信的三种方式

    事先准备 创建一个项目够 修改目录下的app json 在pages中注册页面 同时新增test1组件 也在app json中注册为全局组件 并命名为my test app json 配置 pages pages home home pag
  • JUnit4 initializationError[Runner:JUnit4](0.001s)junit4报错

    junit版本 4 12 如图 原因 缺少 依赖的jar hamcrest core 1 1 jar 添加后
  • vue判断undefined_这几个小技巧,让你书写不一样的Vue!

    前言 最近一直在阅读Vue的源码 发现了几个实战中用得上的小技巧 下面跟大家分享一下 同时也可以阅读我之前写的Vue文章 vue开发中的 骚操作 挖掘隐藏在源码中的Vue技巧 抽丝剥茧般的阅读源码 将 nextTick 拉下神坛 隐藏在源码
  • Spring框架之AOP详解

    Spring AOP 理论 AOP 灵魂三问 AOP的一些术语概念 Spring AOP 底层实现 五种通知形式 实现 如何写切面类 具体举例 理论 AOP 灵魂三问 1 AOP是什么 AOP中文叫做面向切面编程 为Aspect Orien
  • Spring Boot入门&整合常用框架整理丨深度好文

    一 SpringBoot简介 1 1 原有Spring优缺点分析 1 1 1 Spring的优点分析 Spring是Java企业版 Java Enterprise Edition JEE 也称J2EE 的轻量级代替品 无需开发重量级的Ent