当前位置: 首页 > news >正文

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官网有具体介绍

  1. 创建独立的 Spring 应用程序
  2. 直接嵌入 Tomcat、Jetty 或 Undertow(无需部署 WAR 文)
  3. 提供丰富的 “starter” 依赖项以简化您的构建配置
  4. 尽可能自动配置 Spring 和第三方库
  5. 提供生产就绪型功能,例如指标、运行状况检查和外部化配置
  6. 不会生成额外检查,也不需要 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.propertiesapplication.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类时&#xff0c;必须包含#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 以下链接的内容&#xff1a; 由于国内访问不了&#xff0c;找到一些方法下载了这个文件内容&#xff0c; 部署是mages 对象的镜像 WEB docker.io/kubernetesui/dash…...

远程root用户访问服务器中的MySQL8

一、Ubuntu下的MySQL8安装 在Ubuntu系统中安装MySQL 8.0可以通过以下步骤进行1. 更新包管理工具的仓库列表&#xff1a; sudo apt update 2. 安装MySQL 8.0&#xff0c;root用户默认没有密码&#xff1a; sudo apt install mysql-server sudo apt install mysql-client 【…...

解释一下 Java 中的静态变量(Static Variable)和静态方法(Static Method)?

今天来和大家深入探讨一下 Java 中的静态变量和静态方法&#xff0c;并通过一些具体的例子来理解它们在实际开发中的应用。 静态变量&#xff08;Static Variable&#xff09; 静态变量&#xff0c;也称为类变量&#xff0c;是在类的层次上共享的变量。这意味着无论创建了多少…...

【Linux】————磁盘与文件系统

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;Linux 创作时间 &#xff1a;2024年10月17日 一、磁盘的物理结构 磁盘的物理结构如图所示&#xff1a; 其中具体的物理存储结构如下&#xff1a; 磁盘中存储的基本单位为扇区&#xff0c;一个扇区的大小一般为512字…...

平衡控制——直立环——速度环

目录 平衡控制原理 平衡控制模型 平衡控制中基于模型设计与自动代码生成技术 速度环应用原理 速度控制模型 平衡控制原理 下图是一个单摆模型&#xff0c;对其进行受力分析如图。 在重力作用下,单摆受到和角度成正比,运动方向相反的回复力。而且在空气中运动的单摆,由于受…...

面试简要介绍hashMap

jdk8之前&#xff0c;hashmap采用的数据结构是数组链表&#xff0c;jdk8之后采用的数据结构是数组链表/红黑树。hashmap的数据以键值对的形式存在&#xff0c;如果两个元素的hash值相同&#xff0c;就会发生hash冲突&#xff0c;被放到同一个链表上--->如何解决hash冲突---&…...

HTTPS如何实现加密以及SSL/TSL加密的详细过程

通过将服务器从 HTTP 提升到 HTTPS 加密&#xff0c;数据在客户端和服务器之间的传输过程中的确得到了安全保护。以下是这种实现加密的机制以及客户端需要做的事情的详细说明。 为什么这样就实现了加密 SSL/TLS 协议&#xff1a; HTTPS 使用 SSL&#xff08;安全套接层&#x…...

Golang | Leetcode Golang题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; 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 远程调用协议

来源&#xff1a;https://www.bilibili.com/video/BV1Qv4y127B4/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 可以理解为&#xff0c;调用远程服务器上的一个方法/函数/服务的方式&#xff0c;同时隐藏网络细节 一个 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写作,海量素材库

光速写作是一款专为解决写作难题设计的应用。它具有以下功能&#xff1a;- 「AI写作」&#xff1a;帮助分析题目、整理写作思路&#xff0c;合成作文&#xff0c;写出好文章。- 「作文批改」&#xff1a;拍照上传作文后&#xff0c;进行全文点评和分句点评&#xff0c;并进行全…...

【已解决,含泪总结】非root权限在服务器上配置python和torch环境,代码最终成功训练(一)

配置Python环境 没有root权限服务器上有多个python环境但没有自己想要的怎么办 之前跑别的实验的时候改过指定的python3.7版本&#xff0c;但是居然我过了一段时间之后&#xff0c;再次打开&#xff0c;python版本居然又回到2.7&#xff08;服务器/usr/下的默认python版本&am…...

公安基础知识-通哥

公安机关办理行政案件能力 考点一 治安案件追溯失效 6个月 派出所只有警告和500块以下罚款 公安是行政机关 1、治安小事、刑事案件大事 2、殴打他人-轻伤-&#xff08;刑事案件&#xff09;、轻微伤&#xff08;治安案件&#xff09; 3、《治安处罚法》《刑法》 4、只能构…...

Python画图|极坐标下的散点图动态输出

【1】引言 前序已经学习过散点图输出和极坐标图输出&#xff0c;文章链接包括但不限于下述部分&#xff1a; python画散点图|scatter()函数小试牛刀&#xff08;入门级教程&#xff09;_python ax.scatter-CSDN博客 python画图|极坐标中画散点图_极坐标上的散点图-CSDN博客 …...

揭开MySQL并发中的“死锁”之谜:从原理到解决方案的深度解析

目录 1. 环境准备&#xff1a;创建“账户”和“标记”表1.1 创建 dl_account_t 表1.2 创建 dl_mark_t 表 2. 死锁详解2.1 死锁情景一&#xff1a;相反加锁顺序导致的死锁2.2 死锁情景二&#xff1a;唯一索引冲突引发的死锁 3. 事务隔离级别与锁机制4. 预防与解决死锁的方法4.1 …...

【论文阅读】Reliable, Adaptable, and Attributable Language Models with Retrieval

文章目录 OverviewCurrent Retrieval-Augmented LMsArchitectureTraining Limitations & Future Work Overview Parametic language models的缺点&#xff1a; 事实性错误的普遍存在验证的难度&#xff08;可溯源性差&#xff09;难以在有顾虑的情况下排除某些序列适应调整…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...