SpringBoot的开篇 特点 初始化 ioc 配置文件
文章目录
- 前言
- SpringBoot发展历程
- SpringBoot前置准备
- SpringBoot特点
- SpringBoot项目初始化
- 项目启动
- Springboot的核心概念IOC
- 概念介绍
- Bean对象
- 通过注解扫描包
- 例子
- 配置文件
前言
SpringBoot发展历程
最初,Spring框架的使用需要大量的XML配置,这使得开发过程复杂且难以维护。开发者需要通过XML文件来定义应用的各个组件和它们之间的关系。
随着Spring 4.x的发布,框架逐渐引入了基于注解的配置方式。开发者可以通过Java类中的注解来代替XML配置,从而简化了配置过程。这一变化使得开发者能够更直观地理解应用的结构,并减少了配置文件的数量
为了解决传统Spring开发中的复杂性,Pivotal团队在2014年推出了Spring Boot。Spring Boot旨在简化基于Spring的应用开发,使得开发者可以更快速地构建和部署应用。它提供了约定优于配置的原则,减少了繁琐的配置步骤,同时集成了微服务架构的理念。
SpringBoot前置准备
Java语言基础,IDEA编辑器、
Spring Boot 2.x版本支持JDK 8及以上版本
Spring Boot 3.x版本要求使用JDK 17或更高版本
SpringBoot特点
SpringBoot官网有具体介绍
- 创建独立的 Spring 应用程序
- 直接嵌入 Tomcat、Jetty 或 Undertow(无需部署 WAR 文)
- 提供丰富的 “starter” 依赖项以简化您的构建配置
- 尽可能自动配置 Spring 和第三方库
- 提供生产就绪型功能,例如指标、运行状况检查和外部化配置
- 不会生成额外检查,也不需要 XML 配置
SpringBoot项目初始化
IDEA编辑器创建项目,默认从 https://start.spring.io/上拉取代码,可能会失败,所以更换成阿里代理

项目启动
找到主类,点击绿色按钮启动

启动日志内容解析,这些日志信息记录了Spring Boot应用从启动到Tomcat和Spring上下文初始化的整个过程。
2024-10-27 20:56:54.037 INFO 54700 --- [ main] com.example.demo.Demo1Application : Starting Demo1Application using Java 11.0.13 on bogon with PID 54700 (/Users/one/Downloads/java后端学习/demo1/target/classes started by one in /Users/one/Downloads/java后端学习/demo1)
//- 应用程序 `Demo1Application` 正在启动,使用 Java 11.0.13,进程ID为54700。
2024-10-27 20:56:54.045 INFO 54700 --- [ main] com.example.demo.Demo1Application : No active profile set, falling back to 1 default profile: "default"
//- 没有设置活动的配置文件,使用默认配置文件。
2024-10-27 20:56:56.032 INFO 54700 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)// 内嵌的Tomcat服务器在8080端口初始化。
-2024-10-27 20:56:56.056 INFO 54700 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]//- 开始启动Tomcat服务。
2024-10-27 20:56:56.056 INFO 54700 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.68]
//- 启动Servlet引擎,使用的是Apache Tomcat 9.0.68。
2024-10-27 20:56:56.272 INFO 54700 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
//始化Spring的Web应用上下文。
2024-10-27 20:56:56.272 INFO 54700 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2092 ms
// 根Web应用上下文的初始化完成,耗时2092毫秒。
2024-10-27 20:56:56.936 INFO 54700 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
//- 添加欢迎页面,通常是`static/index.html`。
2024-10-27 20:56:57.159 INFO 54700 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
//- Tomcat在8080端口成功启动,应用的上下文路径为空。
2024-10-27 20:56:57.178 INFO 54700 --- [ main]
com.example.demo.Demo1Application : Started Demo1Application in 4.643 seconds (JVM running for 6.993)
//- 应用`Demo1Application`启动完成,总耗时4.643秒。
2024-10-27 20:57:19.742 INFO 54700 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
// 开始初始化Spring的`DispatcherServlet`。
2024-10-27 20:57:19.744 INFO 54700 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
//`DispatcherServlet`的初始化开始
2024-10-27 20:57:19.758 INFO 54700 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 14 ms
//- `DispatcherServlet`的初始化完成,耗时14毫秒。
Springboot的核心概念IOC
概念介绍
IoC(Inversion of Control,控制反转)是一种对象管理技术,通常被称为IoC容器。它是一项管理对象生成、获取和管理的技术,Java作为一门面向对象的语言,对象的管理就至关重要。在传统的Java编程中,对象一般通过new构建,不方便管理,而Springboot通过注解来构建对象。
Bean对象
Bean是由Spring IoC容器实例化、组装和管理的对象。容器负责其生命周期,包括创建、初始化和销毁。
Bean的定义可以通过XML配置、Java注解或Java配置类来实现,提供了多种灵活的配置方式。
Spring支持依赖注入(DI),可以在Bean中自动注入其依赖的其他Bean,从而降低了对象之间的耦合度。
通过注解扫描包
在主类上添加@ComponentScan包扫描注解,注意:该注解会扫描述的类所在包和其子包的注解springboot的主类SpringBootApplication集成了这个包
例子
首先,使用@Configuration注解定义一个配置类,并通过@Bean注解创建Bean。
@Configuration
public class AppConfig { @Bean public UserService userService() { return new UserService(); } @Bean public UserRepository userRepository() { return new UserRepository(); }
}
接下来,在需要使用这些Bean的地方,通过@Autowired注解进行依赖注入
@Service
public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } public void performAction() { // 使用 userRepository }
}
配置文件
配置文件是管理应用设置的重要部分。通常使用application.properties或application.yml来定义各种配置项,配置项都是做了默认配置的比如端口号,日志。
application.yml
# 设置端口号
server:port: 9999
application.properties
# 设置端口号
server.port=8081
文章到这里就结束了,希望对你有所帮助
相关文章:
SpringBoot的开篇 特点 初始化 ioc 配置文件
文章目录 前言SpringBoot发展历程SpringBoot前置准备SpringBoot特点 SpringBoot项目初始化项目启动Springboot的核心概念IOC概念介绍Bean对象通过注解扫描包 例子配置文件 前言 SpringBoot发展历程 最初,Spring框架的使用需要大量的XML配置,这使得开发…...
docker 可用镜像服务地址(2024.10.25亲测可用)
1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因:镜像服务器地址不可用。 2.可用地址 编辑daemon.json: vi /etc/docker/daemon.json内容修改如下: {"registry-mirrors": ["https://…...
【SQL实验】表的更新和简单查询
完整代码在文章末尾 在上次实验创建的educ数据库基础上,用SQL语句为student表、course表和sc表中添加以下记录 【SQL实验】数据库、表、模式的SQL语句操作_创建一个名为educ数据库,要求如下: (下面三个表中属性的数据类型需要自己设计合适-CSDN博客在这篇博文中已经…...
【C++】 string的了解及使用
标准库中的string类 在使用string类时,必须包含#include头文件以及using namespace std; string类的常用接口说明 C中string为我们提供了丰富的接口来供我们使用 – string接口文档 这里我们只介绍一些常见的接口 string类对象的常见构造 #include <iostrea…...
【K8S】kubernetes-dashboard.yaml
https://raw.githubusercontent.com/kubernetes/dashboard/v3.0.0-alpha0/charts/kubernetes-dashboard.yaml 以下链接的内容: 由于国内访问不了,找到一些方法下载了这个文件内容, 部署是mages 对象的镜像 WEB docker.io/kubernetesui/dash…...
远程root用户访问服务器中的MySQL8
一、Ubuntu下的MySQL8安装 在Ubuntu系统中安装MySQL 8.0可以通过以下步骤进行1. 更新包管理工具的仓库列表: sudo apt update 2. 安装MySQL 8.0,root用户默认没有密码: sudo apt install mysql-server sudo apt install mysql-client 【…...
解释一下 Java 中的静态变量(Static Variable)和静态方法(Static Method)?
今天来和大家深入探讨一下 Java 中的静态变量和静态方法,并通过一些具体的例子来理解它们在实际开发中的应用。 静态变量(Static Variable) 静态变量,也称为类变量,是在类的层次上共享的变量。这意味着无论创建了多少…...
【Linux】————磁盘与文件系统
作者主页: 作者主页 本篇博客专栏:Linux 创作时间 :2024年10月17日 一、磁盘的物理结构 磁盘的物理结构如图所示: 其中具体的物理存储结构如下: 磁盘中存储的基本单位为扇区,一个扇区的大小一般为512字…...
平衡控制——直立环——速度环
目录 平衡控制原理 平衡控制模型 平衡控制中基于模型设计与自动代码生成技术 速度环应用原理 速度控制模型 平衡控制原理 下图是一个单摆模型,对其进行受力分析如图。 在重力作用下,单摆受到和角度成正比,运动方向相反的回复力。而且在空气中运动的单摆,由于受…...
面试简要介绍hashMap
jdk8之前,hashmap采用的数据结构是数组链表,jdk8之后采用的数据结构是数组链表/红黑树。hashmap的数据以键值对的形式存在,如果两个元素的hash值相同,就会发生hash冲突,被放到同一个链表上--->如何解决hash冲突---&…...
HTTPS如何实现加密以及SSL/TSL加密的详细过程
通过将服务器从 HTTP 提升到 HTTPS 加密,数据在客户端和服务器之间的传输过程中的确得到了安全保护。以下是这种实现加密的机制以及客户端需要做的事情的详细说明。 为什么这样就实现了加密 SSL/TLS 协议: HTTPS 使用 SSL(安全套接层&#x…...
Golang | Leetcode Golang题解之第516题最长回文子序列
题目: 题解: func longestPalindromeSubseq(s string) int {n : len(s)dp : make([][]int, n)for i : range dp {dp[i] make([]int, n)}for i : n - 1; i > 0; i-- {dp[i][i] 1for j : i 1; j < n; j {if s[i] s[j] {dp[i][j] dp[i1][j-1] …...
(done) 什么 RPC 协议? remote procedure call 远程调用协议
来源:https://www.bilibili.com/video/BV1Qv4y127B4/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 可以理解为,调用远程服务器上的一个方法/函数/服务的方式,同时隐藏网络细节 一个 python3 …...
PCL 基于Ransac提取误匹配点对
目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 基于RANSAC的误匹配点对提出函数 2.1.2 点云可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、…...
光速写作 2.0.5 | 专注AI写作,海量素材库
光速写作是一款专为解决写作难题设计的应用。它具有以下功能:- 「AI写作」:帮助分析题目、整理写作思路,合成作文,写出好文章。- 「作文批改」:拍照上传作文后,进行全文点评和分句点评,并进行全…...
【已解决,含泪总结】非root权限在服务器上配置python和torch环境,代码最终成功训练(一)
配置Python环境 没有root权限服务器上有多个python环境但没有自己想要的怎么办 之前跑别的实验的时候改过指定的python3.7版本,但是居然我过了一段时间之后,再次打开,python版本居然又回到2.7(服务器/usr/下的默认python版本&am…...
公安基础知识-通哥
公安机关办理行政案件能力 考点一 治安案件追溯失效 6个月 派出所只有警告和500块以下罚款 公安是行政机关 1、治安小事、刑事案件大事 2、殴打他人-轻伤-(刑事案件)、轻微伤(治安案件) 3、《治安处罚法》《刑法》 4、只能构…...
Python画图|极坐标下的散点图动态输出
【1】引言 前序已经学习过散点图输出和极坐标图输出,文章链接包括但不限于下述部分: python画散点图|scatter()函数小试牛刀(入门级教程)_python ax.scatter-CSDN博客 python画图|极坐标中画散点图_极坐标上的散点图-CSDN博客 …...
揭开MySQL并发中的“死锁”之谜:从原理到解决方案的深度解析
目录 1. 环境准备:创建“账户”和“标记”表1.1 创建 dl_account_t 表1.2 创建 dl_mark_t 表 2. 死锁详解2.1 死锁情景一:相反加锁顺序导致的死锁2.2 死锁情景二:唯一索引冲突引发的死锁 3. 事务隔离级别与锁机制4. 预防与解决死锁的方法4.1 …...
【论文阅读】Reliable, Adaptable, and Attributable Language Models with Retrieval
文章目录 OverviewCurrent Retrieval-Augmented LMsArchitectureTraining Limitations & Future Work Overview Parametic language models的缺点: 事实性错误的普遍存在验证的难度(可溯源性差)难以在有顾虑的情况下排除某些序列适应调整…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
