Springboot2笔记核心技术——1.基础入门

目录

1.spring和springboot的区别

1. 框架 vs. 工具

2. 配置方式

3. 启动方式

4. 项目结构

5. 生态系统

2.SpringBoot2入门

1. 创建项目

2. 项目结构

3. 编写主类

4. 添加Controller

5. 配置应用

6. 启动应用

7. 测试应用

8. 进一步学习

3.了解自动配置原理 

1. Spring Boot 特点

1.1 依赖管理

1.2 自动配置

2. 容器功能

2.1 使用注解完成容器功能

2.2 原生配置文件引入

3. 自动配置原理入门

3.1 引导加载自动配置类

3.2 按需开启自动配置项

3.3 定制化修改自动配置

3.4 最佳实践

4. 开发小技巧

4.1 Lombok

4.2 Spring Initializr

4.3 DevTools


1.spring和springboot的区别

1. 框架 vs. 工具

  • Spring:一个全面的Java框架,提供了丰富的功能(如IoC、AOP等),需要手动配置和管理。
  • Spring Boot:基于Spring的框架,旨在简化Spring应用的创建和配置,提供开箱即用的配置。

2. 配置方式

  • Spring:需要大量的XML或Java配置,配置复杂且繁琐。
  • Spring Boot:采用约定优于配置,默认提供许多配置,减少了手动配置的需求。

3. 启动方式

  • Spring:通常需要一个Servlet容器(如Tomcat)来部署和运行。
  • Spring Boot:可以直接运行独立的Spring Boot应用,内嵌Servlet容器,简化了部署过程。

4. 项目结构

  • Spring:项目结构不固定,开发者需要自行设计。
  • Spring Boot:推荐的项目结构明确,有助于更快速地构建和管理项目。

5. 生态系统

  • Spring:更为广泛,涵盖了众多模块和功能。
  • Spring Boot:专注于快速开发和简化配置,常与Spring Cloud等工具结合使用。

2.SpringBoot2入门

1. 创建项目

  • 使用Spring Initializr(https://start.spring.io/)生成项目:
    • 选择项目类型(Maven或Gradle)。
    • 选择Spring Boot版本(如2.x)。
    • 添加所需的依赖(如Spring Web、Spring Data JPA等)。
    • 点击“Generate”下载项目压缩包。

2. 项目结构

解压缩后,项目结构如下:

src 
└── main 
├── java 
│ └── com 
│ └── example 
│ └── demo 
│ └── DemoApplication.java 
└── resources 
├── application.properties

3. 编写主类

DemoApplication.java中,添加主方法:

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

4. 添加Controller

创建一个简单的REST Controller:

package com.example.demo; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello, Spring Boot!"; } 
}

5. 配置应用

application.properties中进行基本配置:

server.port=8080

6. 启动应用

使用以下命令启动应用:

./mvnw spring-boot:run # Maven 
# 或者 
./gradlew bootRun # Gradle

7. 测试应用

在浏览器中访问 http://localhost:8080/hello,您应该能看到 "Hello, Spring Boot!" 的响应。

8. 进一步学习

  • 数据库集成:可以使用Spring Data JPA与数据库交互。
  • 安全性:引入Spring Security进行安全控制。
  • 微服务架构:结合Spring Cloud构建微服务。

3.了解自动配置原理 

1. Spring Boot 特点

1.1 依赖管理
  • 简化依赖管理:Spring Boot使用spring-boot-starter依赖管理来简化库的引入。通过starter依赖,您可以轻松引入与特定功能相关的所有依赖,如Spring Web、Spring Data等。
1.2 自动配置
  • 自动配置:Spring Boot可以根据项目中的依赖自动配置应用,减少手动配置的需求,提升开发效率。自动配置类通过条件注解进行控制。

2. 容器功能

2.1 使用注解完成容器功能
  1. @Configuration

    • 用于定义一个或多个@Bean方法的类,以表示Spring的配置类。
  2. @Bean、@Component、@Controller

    • @Bean:用于定义Spring管理的Bean,通常在@Configuration类中使用。
    • @Component:用于标识一个Spring组件,Spring会自动扫描并注册。
    • @Controller:用于定义一个控制器,主要用于处理请求。
  3. @ComponentScan、@Import

    • @ComponentScan:用于指定包路径,自动扫描并注册组件。
    • @Import:用于导入其他配置类。
  4. @Conditional

    • 用于在满足特定条件时,才注册Bean。
2.2 原生配置文件引入
  1. @ImportResource
    • 允许您导入传统的XML配置文件,使得Spring Boot可以与旧的Spring应用兼容。

3. 自动配置原理入门

3.1 引导加载自动配置类
  • Spring Boot使用@EnableAutoConfiguration注解来启动自动配置,通过spring.factories文件加载自动配置类。
3.2 按需开启自动配置项
  • 您可以通过在application.propertiesapplication.yml文件中配置spring.autoconfigure.exclude来排除特定的自动配置。
3.3 定制化修改自动配置
  • 您可以自定义Bean以覆盖默认的自动配置,从而实现定制化。
3.4 最佳实践
  • 熟悉自动配置原理和条件注解,可以更好地利用Spring Boot的强大功能。

4. 开发小技巧

4.1 Lombok
  • Lombok是一个可以简化Java代码的库,通过注解生成常用的方法(如getter、setter、构造函数等),减少样板代码。
4.2 Spring Initializr
  • Spring Initializr是一个在线工具,可以快速生成Spring Boot项目,选择依赖和项目配置,省去繁琐的手动设置。
4.3 DevTools
  • Spring Boot DevTools提供热部署功能,支持自动重启和快速开发调试,提升开发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R 语言 | 取数据框一列子集时,如何保持数据框结构?drop=F

数据框取多列时,返回的还是数据框。 取一列时,默认退化为一个向量: > class(iris) [1] "data.frame" > t1iris[, 1:2] > class(t1) [1] "data.frame"> t2iris[,1] > class(t2) [1] "numeric" …

2.1 HuggingFists系统架构(二)

部署架构 上图为HuggingFists的部署架构。从架构图可知,HuggingFists主要分为服务器(Server)、计算节点(Node)以及数据库(Storage)三部分。这三部分可以分别部署在不同的机器上,以满足系统的性能需求。为部署方便,HuggingFists社区版将这三部…

YOLOv9改进,YOLOv9主干网络替换为GhostNetV2(华为提出的轻量化架构)

摘要 摘要:轻量级卷积神经网络(CNN)专为移动设备上的应用而设计,具有更快的推理速度。卷积操作只能在窗口区域内捕捉局部信息,这限制了性能的进一步提升。将自注意力引入卷积可以很好地捕捉全局信息,但会极大地拖累实际速度。本文提出了一种硬件友好的注意力机制(称为 D…

CSP-S 2024 提高级 第一轮(初赛) 完善程序(2)

【题目】 CSP-S 2024 提高级 第一轮(初赛) 完善程序(2) (2)(次短路)已知一个n个点m条边的有向图G,并且给定图中的两个点s和t,求次短路(长度严格大于最短路的最短路径&am…

TFTP协议

目录 一、TFTP协议概述 1.1 TFTP协议简介 1.2 TFTP协议特点 二、TFTP协议原理 2.1 TFTP协议工作流程 2.2 TFTP协议数据包格式 三、TFTP协议应用场景 3.1 网络设备配置文件传输 3.2 虚拟机镜像文件传输 3.3 IoT设备固件升级 四、TFTP协议优化方法 4.1 增加超时重传机…

深入理解Python中的数据结构:OrderedDict

目录 1. 前言 2. OrderedDict的基本概念 2.1 OrderedDict的创建 2.2 排序特性 2.3 比较OrderedDict和标准字典 3. OrderedDict的高级功能 3.1 元素的移动 3.2 重新排序 3.3 反转顺序 4. OrderedDict的性能表现 4.1 插入性能测试 4.2 读取性能测试 5. OrderedDict的…

数据结构之——队列

一、队列概述 队列是一种操作受限的线性表,其限制条件为允许在表的一端进行插入,而在表的另一端进行删除。插入的一端叫做队尾,删除的一端叫做队头。向队列中插入新元素的行为称为进队,从队列中删除元素的行为称为出队。例如军训的…

Java服务端开发中的API版本管理:从URI到Header的不同策略

Java服务端开发中的API版本管理:从URI到Header的不同策略 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java服务端开发中,API版本管理是一个重要而复杂的问题。随着业…

前端文件上传全过程

特别说明:ui框架使用的是蚂蚁的antd 这里主要是学习前端上传接口的传递参数包括前端上传之前对于代码的整理 一、第一步将前端页面画出来 源代码: /** 费用管理 - IT费用管理 - 费用数据上传 */ import { useState } from "react"; import {…

Leetcode 56.合并区间-Python

链接:56. 合并区间 - 力扣(LeetCode) 题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组&#xff…

【基础知识】网络套接字编程

套接字 IP地址 port(端口号) socket(套接字) socket常见API //创建套接字 int socket(int domain, int type, int protocol); //绑定端口 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); //监听套接字…

Prometheus篇之利用promtool工具校验配置正确性

promtool工具 promtool是Prometheus的一个命令行工具,它提供了一些功能来帮助用户进行Prometheus配置文件(如prometheus.yml)的检查、规则检查和调试。 解释 promtool check config: 验证Prometheus配置文件的语法和设置。 promtool命令&…

【最基础最直观的排序 —— 选择排序算法】

最基础最直观的排序 —— 选择排序算法 选择排序算法是一种简单直观的排序算法。其基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小&a…

vue3常用的组件间通信

一 props props 可以实现父子组件通信&#xff0c;props数据是只读。 1. 基本用法 在父组件中&#xff0c;你可以这样传递 props&#xff1a; <template><ChildComponent message"Hello, Vue 3!" /> </template><script setup> import C…

WebPage-Bootstrap框架(container类,container-fluid类,栅格系统)

1.Bootstrap Bootstrap为页面内容和栅格系统包裹了一个.container容器&#xff0c;框架预先定义类 1.1container类 响应式布局容器的宽度 手机-小于768px 宽度设置100%&#xff1b; 平板-大于等于768px 设置宽度为750px 桌面显示器-大于等于992px 设置宽度 970px 大屏幕显…

【Bug解决】Nacos启动成功,但却无法访问(提示:无法访问此网站,192.168.10.88的响应时间过长)

情形如下&#xff1a;第一次启动运行一些正常&#xff0c;非正常关闭虚拟机&#xff0c;第二次启动虚拟机查看容器状态如下&#xff1a; docker nacos容器一切正常启动&#xff0c;但是就是无法访问web控制面板&#xff0c;访问无法连接。 首先&#xff1a;执行命令查看日志 …

设置元素浮动,出现高度塌陷导致鼠标无法点击

先贴代码片段&#xff1a; <div style"width: 30%; float: left;"><nz-input-group nzSearch [nzAddOnAfter]" suffixIconButton"><input type"text" nz-input placeholder"请输入实验名称" [(ngModel)]"q.name&…

glTF格式:WebGL应用的3D资产优化解决方案

摘要 glTF作为一种高效的3D资产格式&#xff0c;为WebGL、OpenGL ES和OpenGL运行时的应用提供了强有力的支持。它不仅简化了3D模型的传输与加载流程&#xff0c;还通过优化资产大小&#xff0c;使得打包、解包更加便捷。本文将深入探讨glTF格式的优势&#xff0c;并提供实用的代…

ClickHouse 与 Quickwit 集成实现高效查询

1. 概述 在当今大数据分析领域&#xff0c;ClickHouse 作为一款高性能的列式数据库&#xff0c;以其出色的查询速度和对大规模数据的处理能力&#xff0c;广泛应用于在线分析处理 (OLAP) 场景。ClickHouse 的列式存储和并行计算能力使得它在处理结构化数据查询时极具优势&…

初探shell与bash使用指南

文章目录 一、shell二、bash第一步、新建脚本第二步、添加权限第三步、执行bash脚本 在日常开发中&#xff0c;经常使用到Linux服务器相关知识&#xff0c;输入命令获取想要的结果&#xff0c;本篇介绍shell 与 bash的相关知识。 一、shell 是命令行解释器&#xff0c;接收用户…