springboot学习笔记第一天

news2025/1/9 18:47:17

springboot的简单了解

Java Spring 是一个开源的轻量级应用框架,在 Java 应用开发中起到了简化开发、提高效率、促进模块化和松耦合、支持技术集成等多重作用,成为了广大企业和开发者首选的企业级 Java 应用开发框架之一。

Spring Boot 是一个基于 Spring 框架的开源项目,Spring Boot 极大地简化了基于 Spring 的应用程序的开发和部署过程,使得开发者能够更专注于业务逻辑的实现而不是处理框架的配置和集成问题。

xml和maven

想要搭建一个springboot框架,我们需要简单配置xml和maven

xml

在 Spring 框架中,XML 是一种常用的配置方式,用于配置和声明 Spring 应用程序的各种组件、依赖关系、以及其他相关的配置信息。

使用apache-maven-3.8.1
路径apache-maven-3.8.1\conf\settings.xml
在这里插入图片描述
localRepository,这个路径是为配置maven做准备,将你要下载的maven放到指定的目录,其他的东西可以不动。

maven

在idea中配置maven,打开idea,右上角小齿轮,选择Settings
在这里插入图片描述
在打开的Settings中左上角搜索maven,右侧Maven home path填入下载的apache-maven-3.8.1的路径,User settings file在home path路径后加上\conf\settings.xml,若不可用记得勾选Override
在这里插入图片描述

maven项目的坐标值

创建一个maven项目,在pom.xml中,groupId+artifactId+version就可以确定一个maven项目
在这里插入图片描述
在https://mvnrepository.com/网站上搜索Spring Boot Starter Web使用2.66版本如下:

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

复制后插入到pom.xml中,等待idea配置和下载完成,下载的maven包会在settings.xml文件中自行配置的localRepository标签路径下。

编写启动类

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class EasySpringAApplication {
    //项目启动类  运行该类就运行了整个项目
    public static void main(String[] args) {
        SpringApplication.run(EasySpringAApplication.class,args);
        //run有两个参数,(本类的类对象,args)
    }
}

spring Bean的作用域

在 Spring Framework 中,Bean 的作用域(Scope)定义了 Spring 容器如何管理和提供 Bean 的实例。Spring 支持多种作用域,每种作用域都适用于不同的应用场景和需求。

Singleton(单例)

默认的作用域。
在整个应用程序的生命周期中,Spring 容器只创建 Bean的一个实例,并且所有请求都共享这个实例。
适用于那些状态无关、可共享的 Bean,例如数据访问对象(DAO)、服务类等。

Prototype(原型)

每次请求时,Spring 容器都会创建一个新的 Bean 实例。
每个请求都会返回一个新的 Bean 实例。
适用于那些状态相关、不可共享的 Bean,例如 HTTP 请求处理器、线程相关的 Bean 等。

Request(请求)

每个 HTTP 请求都会创建一个新的 Bean 实例,该 Bean 仅在当前 HTTP 请求内有效。
适用于 Web 应用程序中需要在每个 HTTP 请求中具有独立状态的 Bean。

Session(会话)

每个 HTTP 会话(Session)都会创建一个新的 Bean 实例,该 Bean 仅在当前 HTTP 会话内有效。
适用于 Web 应用程序中需要在整个会话期间保持状态的 Bean,例如用户登录信息。

Global Session

类似于 Session 作用域,但仅适用于 Portlet 环境。
在 Portlet 应用程序中,全局会话是在整个 Web 应用程序的生命周期内有效的会话。

Spring IOC

管理项目中的java bean的生命周期
在项目运行阶段,程序中需要很多的对象来完成整体业务

Spring Framework 提供了多种注解来简化配置和管理依赖注入。这些注解使得在Spring应用程序中声明Bean和依赖关系更加方便和直观。

常用的Spring IOC注解类

@Component:通用的组件注解,用于标识一个类为Spring的组件,会被Spring自动扫描并纳入到IOC容器中管理。

@Repository:用于标识持久层的DAO组件,通常与数据访问相关。

@Service:用于标识业务层的Service组件,通常用于定义业务逻辑。

@Controller:用于标识控制层的Controller组件,通常用于处理HTTP请求。

@RestController:结合了@Controller和@ResponseBody,用于RESTful风格的控制器。

@Configuration:用于定义配置类,替代XML配置文件,可以结合@Bean注解使用。

@Bean:在@Configuration类中使用,声明一个Bean,并交由Spring容器管理。

@Autowired:自动装配注解,可以用于字段、构造方法、Setter方法上,Spring会自动注入匹配的Bean。

@Qualifier:与@Autowired一起使用,指定具体要注入的Bean名称,解决自动装配的歧义性。

@Value:用于注入属性值,支持SpEL表达式。

@Scope:用于指定Bean的作用域,如单例、原型等。

@PostConstruct:在Bean创建后,初始化方法调用前执行。

@PreDestroy:在Bean销毁前执行的方法。

@Lazy:懒加载注解,延迟初始化Bean。

@Primary:用于解决自动装配时的多个Bean候选者的歧义性,指定首选的Bean。

让spring管理这些类的对象的生命周期
spring提供了IOC(控制反转)的方式方便获取该对象
容器和代码之间的控制权反转,代码中不需要明文调用方法来得到对象,只需要声明该类需要什么类型的对象即可

Spring MVC

Spring MVC 是 Spring Framework 中的一个模块,用于开发基于 Java 的 Web 应用程序。MVC 是 Model-View-Controller 的缩写,是一种常见的设计模式,用于分离应用程序的数据模型、用户界面和控制逻辑。

模型(Model):
模型代表应用程序的数据和业务逻辑。
在 Spring MVC 中,模型通常由 POJO(Plain Old Java Object)组成,它们可以通过注解(如 @ModelAttribute)进行标记,从而在视图和控制器之间传递数据。
视图(View):

视图负责呈现用户界面。
Spring MVC 支持多种视图技术,包括 JSP、Thymeleaf、FreeMarker 等。开发者可以根据需求选择合适的视图技术。

控制器(Controller):
控制器负责处理用户请求、调用业务逻辑,并决定返回哪个视图给用户。
在 Spring MVC 中,控制器通常由带有 @Controller 或 @RestController 注解的类来实现,这些类处理特定的 URL 请求,并返回相应的数据或视图。

请求-处理-响应流程:
Spring MVC 使用前端控制器(DispatcherServlet)作为所有请求的入口点。
DispatcherServlet 根据请求 URL 调用适当的控制器,并将请求的处理委派给控制器。
控制器处理完请求后,将数据存储在模型中,并返回一个逻辑视图名(或者直接返回数据给客户端,如果是 RESTful API)。
DispatcherServlet 根据视图解析器(ViewResolver)将逻辑视图名解析为实际的视图对象,并最终呈现给用户。

注解驱动开发:
Spring MVC 提供了丰富的注解支持,如 @Controller、@RequestMapping、@GetMapping、@PostMapping 等,简化了控制器的开发和配置。

数据绑定与验证:
Spring MVC 支持将 HTTP 请求参数绑定到方法参数、表单对象或者命令对象。
还提供了强大的数据验证机制,通过注解(如 @Valid)和 Validator 接口实现数据验证。

RESTful Web 服务支持:
Spring MVC 提供了对 RESTful 风格的 Web 服务的支持,通过 @RestController 注解和 HTTP 方法映射实现。
总体来说,Spring MVC 提供了一个强大且灵活的框架,用于开发基于 Java 的 Web 应用程序,支持传统的 MVC 架构和 RESTful 风格的 Web 服务开发。

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

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

相关文章

深度学习中6种loss函数Pytorch API调用示例

自定义数据 import torch import torch.nn as nn import torch.nn.functional as Fbatchsize2 num_class4logitstorch.randn(batchsize,num_class) targettorch.randint(num_class,size(batchsize,))#delta目标分布 target_logitstorch.randn(batchsize,num_class)#非delta目标…

浏览器中的同源策略、CORS 以及相关的 Fetch API 使用

前言 笔者对前端 Web 技术的认真学习&#xff0c;其实开始于与 Fetch API 的邂逅。当时觉得 fetch() 的设计很不错&#xff0c;也很希望能够请求其它网站下的数据并作处理和展示。学习过程中 HTML 和 CSS 都还好说&#xff0c;由于几乎没有 Web 技术的基础&#xff0c;学习 Fe…

vue配置多个环境变量ENV【收藏版】

vue配置多个环境变量 1. 创建环境变量文件 在你的Vue项目根目录下&#xff0c;你可以创建以下环境变量文件&#xff1a; .env&#xff1a;所有环境都会加载的通用变量。 .env.local&#xff1a;本地覆盖&#xff0c;不会被git跟踪。 .env.[mode]&#xff1a;只有指定模式才会…

1007 Maximum Subsequence Sum(Java)

题目 解释 题目说的就是给你一串K个数字&#xff0c;让你找到连续的和最大的子串&#xff0c;同时输出子串的和、子串起始的元素、子串末尾的元素&#xff0c;如果K个数字全是负数&#xff0c;输出子串和为0、子串起始元素为整个字符串的第一个元素&#xff0c;子串末尾元素为…

CompletableFuture并行编程生产问题处理

前提 本文章是在项目中发现一些同学对并行编程的思想理解&#xff0c;或者说对代码的执行逻辑有些理解偏颇的地方。特整理此文章进行分享&#xff0c;希望有同样困惑的小伙伴能够对此类问题有一个清晰的理解。 在此不会介绍CompletableFuture对库函数用法&#xff0c;因为库函数…

XSS-labs靶场(超详解)1-20关——附原码

level1 原码 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script> window.alert function() { confirm("完成的不错&#xff0…

【Java】字符串StringBuilder类和Stringjoiner类(013)

目录 ♦️StringBuilder类 &#x1f38f;StringBuilder构造方法 &#x1f421;无参构造 &#x1f421;有参构造 &#x1f38f;SringBuilder常用方法 &#x1f38f;StringBuildre类练习题&#xff1a; &#x1f421;对称字符串 &#x1f421;拼装字符串 ♦️Stringjoine…

(Python)内存管理

前言 内存泄漏在编程中是一个严重的问题&#xff0c;可能导致程序性能下降、系统不稳定甚至崩溃。 目录 危害 风险 动态内存分配 引用计数 内存池 垃圾回收 设计原则 危害 性能下降&#xff1a;可用内存减少&#xff0c;导致系统频繁进行内存交换&#xff0c;使程序运行…

Netdevops入门之Telnetlib语法案例

1、Telnetlib模块&#xff1a; 支持telnet/ssh远程访问的模块很多&#xff0c;常见的有telnetlib、ciscolib、paramiko、netmiko、pexpect,其中telnetlib和ciscolib对应telnet协议&#xff0c;后面3个对应SSH协议。 ①-通过ENSP环境搭建实验环境 ②-基础语法-telnetlib案例1&…

最优控制、轨迹优化相关笔记、感悟

写在前面 上学期和最近无聊在看一些最优控制、轨迹优化相关的内容&#xff0c;涉及到MIT Russ Tedrake教授的Underactuated Robotics&#xff0c;以及CMU Zachary Manchester教授的Optimal Control&#xff08;两套课程其实挺像的&#xff09;&#xff0c;加起来估计也看了十多…

机器学习算法(二)线性模型

一、线性回归 假设自变量X矩阵有3个特征&#xff0c;因变量是Y矩阵&#xff0c;w是系数矩阵 Y X * w 损失函数&#xff1a;误差平方和函数&#xff08;Y - label&#xff09;** 2 二、逻辑回归 线性回归得到的是一个实数值 z &#xff0c;用sigmoid函数可以将其映射到 0 …

【SQL Server 】SQL Server 网络配置

目录 ​编辑 第3章&#xff1a;SQL Server 网络配置 SQL Server 网络监听器 SQL Server 网络协议 配置 SQL Server 网络协议 示例&#xff1a;配置 SQL Server 使用自定义端口 安全注意事项 第3章&#xff1a;SQL Server 网络配置 SQL Server 网络监听器 SQL Server 通…

php时间 cookie session 文件上传基础

时间和日期 PHP Date&#xff08;&#xff09; 函数 格式// date(format,timestamp) format Required. Specifies the format of the timestamp timestamp Optional. Specifies a timestamp. Default is the current date and time d - 表示每月的某一天&#xff08;01…

反序列化漏洞靶机实战-serial

一.安装靶机 下载地址为https://download.vulnhub.com/serial/serial.zip&#xff0c;安装好后开启靶机&#xff0c;这里并不需要我们去登录&#xff0c;直接扫描虚拟机nat模式下c网段的ip&#xff0c;看看哪个的80端口开放&#xff0c;然后直接去访问 二.查找cookie 访问靶…

Java Try学习

一. 介绍 io.vavr.control.Try 是 Vavr 库的一个类&#xff0c;用于处理可能抛出异常的方法调用&#xff1b;它提供了一种优雅的方式来处理成功和失败的情况&#xff0c;而无需显示地使用 try-catch 块&#xff1b; 简而言之&#xff0c;它可以优雅的实现 try-catch&#xff…

链表【4】

目录 链表删除指定值元素 反转链表&#xff08;静态链表型&#xff09; 链表删除指定值元素 错误1&#xff1a;两个if间没有用else&#xff0c;导致两个都执行了 #include<stdio.h> const int N1005; int n,first,firstid; using namespace std; struct node {int da…

【Vue3】作用域插槽

【Vue3】作用域插槽 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文…

UI界面自动化测试-Selenium

Selenium工作原理 SeleniumAPI 定位元素 Selenium操作对象 **send_keys 在对象上模拟按键输入 ** clear 清除对象输入的文本内容 ** click 点击对象(无限制) submit 提交(用于form表单) ** getText() 用于获取元素的文本信息 getAttribute() 用于获取属性的值 quit 关闭…

【奥顺苹果CMS二开泛目录4.X版】PHP站群程序新增首页堆砌关键词新增四套seo模板

演示站&#xff08;赠送四套模板&#xff09;&#xff1a; https://macfan.qdwantong.com https://macfan2.qdwantong.com https://macfan3.qdwantong.com https://macfan4.qdwantong.com 4.X版程序特色功能&#xff1a; 后台除了可以设置干扰码、转码、插入符号和拼音这…

[Bugku] web-CTF-矛盾

1.开启环境 2.根据内容得知&#xff0c;get一个num&#xff0c;若num不是数字&#xff0c;出一次num的值&#xff0c;后若num1出flag&#xff1b;若num为数字则不进行任何操作所以要输出flag&#xff0c;首先要num不是数字&#xff0c;然后又要num1这显然是矛盾的&#xff0c;对…