Spring与SpringBoot入门

Spring入门

要使用Spring最起码需要引入两个依赖:

<!-- Spring Core(核心) --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.20</version></dependency><!-- Spring Context(容器) --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.20</version></dependency>

Spring本质上就是一个大的"容器",他可以帮我们创建(实例化)好我们需要的对象,我们需要

使用这些对象的时候,只需要给这个容器要就可以了,即从容器中取出来使用即可

最基本的使用Spring的方式:

public class SpringMain {public static void main(String[] args) {// 1.加载配置类
AnnotationConfigApplicationContext ctx =  new 
AnnotationConfigApplicationContext(SpringConfig.class);// 2.从容器中取需要的对象
IHelloService helloService =  ctx.getBean(IHelloService.class);// 3.调用需要的对象方法
helloService.sayHello();}}

第一步干了啥?

//1. 加载配置类
AnnotationConfigApplicationContext ctx =  new 
AnnotationConfigApplicationContext(SpringConfig.class);

AnnotationConfigApplicationContext类是Spring自带的类,这个类的作用就是加载一个配置文件;

如果想知道加载的这个文件是不是一个配置类: SpringConfig怎么就知道它是一个配置类呢?

使用@Configuration注解:

//此注解就代表他是一个配置类
@Configurationpublic class SpringConfig {}

一般情况下,这个配置类,要想干点活,还得结合其他的注解一块参与:

比如以下场景: 需要再使用@ComponentScan注解参与其他逻辑

//此注解就代表这个类是一个配置类
@Configuration
//此注解用于扫描组件,把扫描到的组件,让Spring管理起来
@componentScan(basepack = "com.gengguolong.spring")
public class SpringConfig{}

@ComponentScan此注解用于从指定的包下边进行所有的类扫描,它只扫描或搜索被@Component注解修饰的那些类,把那些类实例化好放到Spring容器里

第二步

IHelloService helloService =  ctx.getBean(IHelloService.class);

从容器中,直接获取我想要的对象

第三步

helloService.sayHello();
需要注意的点:

默认情况下,Spring帮我们实例化好的对象,是单例,即我们每次使用ctx.getBean(“xxx”),从容器中取对象的时候,取多次也是同一个对象.

需要记住的点:

loc控制反转

以前我们需要什么对象的时候,自己来new,但现在使用了Spring框架,我们不用自己new了,用的时候直接给Spring要就行了.

以前new对象是由我们自己控制的,现在new对象不归我们管了,让Spring接手了,对new对象的控制权交给框架(第三方),这种模式叫做控制反转,也叫loc(Inversion of Control)

2.SpringBoot入门

SpringBoot框架是基于Spring的思想开发出来的一套快速的开发Web的框架,它的底层仍然是Servlet那一套

  1. 内部默认集成好了Tomcat,无需关心Tomcat服务器的配置.
  2. 内部默认集成好了一大批组件,用的时候开启(在配置文件里配置一下)即可.

SpringBoot的目的就是简化开发

SpringBoot项目的创建过程

  1. 创建项目:
    在这里插入图片描述

  2. 选开发依赖的组件及框架
    在这里插入图片描述

  3. 在项目的入口类同级,建立常规的项目包:

在这里插入图片描述

  1. 开始编写Controller

Controller用于接收用户输入.调用Service处理业务逻辑,给用户输出为了表明它是一个控制器类,使用@Controller注解标记

@controller
public class Mycontroller{}

为了能让这个Controller接受用户请求,需要使用@RequestMapping注解标记URL

@controller
@RequestMapping("/my")
public class MyController{public void hello(){}
}

为了能让这个方法运行再次指定下一级URL地址

@Controller
@RequestMapping("/my")
public class MyController{//请求地址是:/my/hello@RequestMapping("/hello")public void hello(){System.out.println("hello你好,我来了");}
}

接下来就可以运行了: http://localhost:8080/my/hello

以上只是在控制台输出内容,我想在游览器输出以上字符串怎么办? 使用@ResponseBody注解,代表方法的返回值作为响应体,响应给游览器,让游览器展示

@Controller
@RequestMapping("/my")
public class Myconntroller {// 请求地址是:/my/hello@RequestMapping("/hello")@ResponseBodypublic String hello(){// System.out.println("hello你好,我来了。");return "hello你好,我来了。";}}

nntroller {
// 请求地址是:/my/hello
@RequestMapping(“/hello”)
@ResponseBody
public String hello(){
// System.out.println(“hello你好,我来了。”);
return “hello你好,我来了。”;
}
}


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

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

相关文章

PostgreSQL中int类型达到上限的一些处理方案

使用int类型作为表的主键在pg中是很常见的情况&#xff0c;但是pg中int类型的范围在-2147483648到2147483647&#xff0c;最大只有21亿&#xff0c;这个在一些大表中很容易就会达到上限。一旦达到上限&#xff0c;那么表中便没办法在插入数据了&#xff0c;这个将会是很严重的问…

网络安全之内容安全

内容安全 攻击可能只是一个点&#xff0c;防御需要全方面进行 IAE引擎 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对 数据包的内容进行识别。&#xff08;应用…

Unity2023.1.19_Embedded Browser-ZFBrowser插件

Unity2023.1.19_Embedded Browser-ZFBrowser插件 官方说明文档可以仔细看一下&#xff1a; ZFBrowser Documentation (zenfulcrum.com) ZFBrowser插件的简单直接使用&#xff1a; 导入插件包资源&#xff0c;遵循常规导包原则即可&#xff1b; 抓取包文件夹下的预制体组件…

【Docker】安装及相关的命令

目录 一 Docker简介 1.1 是什么 1.2 优缺点 1.3 应用场景 1.4 安装 二 命令 2.1 Docker基本命令 2.2 Docker镜像命令 2.3 Docker容器命令 一 Docker简介 1.1 是什么 Docker是一个开源的应用容器引擎&#xff0c;它基于Go语言实现&#xff0c;并利用操作系统本身已有的…

Apache POl

介绍 Apache POl是一个处理Miscrosoft Ofice各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作,一般情况下&#xff0c;POI都是用于操作 Excel 文件。 Apache POl 的应用场景 1.银行网银系统导出交易…

禁止safari浏览器网页双击缩放功能

普通浏览器 普通浏览器&#xff0c;只需要增加meta标签禁止缩放功能就行了 <meta content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0;" name"viewport" /> user-scalableno或0 //禁止双指缩放页面initial-scale1.0…

【Java设计模式】四、适配器模式

文章目录 1、适配器模式2、举例 1、适配器模式 适配器模式Adapter Pattern&#xff0c;是做为两个不兼容的接口之间的桥梁目的是将一个类的接口转换成客户希望的另外一个接口适配器模式可以使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 最后&#xff0c;适配器…

CSS3技巧37:JS+CSS3 制作旋转图片墙

开学了就好忙啊&#xff0c;Three.js 学习的进度很慢。。。 备课备课才是王道。 更一篇 JS CSS3 的内容&#xff0c;做一个图片墙。 其核心要点是把图片摆成这个样子&#xff1a; 看上去这个布局很复杂&#xff0c;其实很简单。其思路是&#xff1a; 所有图片放在一个 div.…

人工智能之Tensorflow程序结构

TensorFlow作为分布式机器学习平台&#xff0c;主要架构如下&#xff1a; 网络层&#xff1a;远程过程调用(gRPC)和远程直接数据存取(RDMA)作为网络层&#xff0c;主要负责传递神经网络算法参数。 设备层&#xff1a;CPU、GPU等设备&#xff0c;主要负责神经网络算法中具体的运…

【数据结构】OJ面试题《设计循环队列》(题库+代码)

1.前言 本题需要结构体和数组的知识&#xff0c;记录每天的刷题&#xff0c;继续坚持&#xff01; 2.OJ题目训练 设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队…

UE5 C++ 单播 多播代理 动态多播代理

一. 代理机制&#xff0c;代理也叫做委托&#xff0c;其作用就是提供一种消息机制。 发送方 &#xff0c;接收方 分别叫做 触发点和执行点。就是软件中的观察者模式的原理。 创建一个C Actor作为练习 二.单播代理 创建一个C Actor MyDeligateActor作为练习 在MyDeligateAc…

Tuning Language Models by Proxy

1、写作动机&#xff1a; 调整大语言模型已经变得越来越耗资源&#xff0c;或者在模型权重是私有的情况下是不可能的。作者引入了代理微调&#xff0c;这是一种轻量级的解码时算法&#xff0c;它在黑盒 大语言模型 之上运行&#xff0c;以达到直接微调模型的结果&#xff0c;但…

Java项目:29 基于SpringBoot+thymeleaf实现的图书管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SpringBootthymeleaf实现的图书管理系统分为管理员、读者两个登录角色&#xff0c;一共是8个功能模块 管理员权限 图书管理&#xff1a; 添加图…

便携式森林消防灭火泵:森林安全的守护者

在自然环境中&#xff0c;森林是地球生态系统的重要组成部分&#xff0c;它们为我们提供氧气、净化空气、防止土壤侵蚀等重要功能。然而&#xff0c;当森林发生火灾时&#xff0c;它们也会成为我们的噩梦。火势蔓延迅速&#xff0c;难以控制&#xff0c;对森林和生态环境造成严…

java高级——反射

目录 反射概述反射的使用获取class对象的三种方式反射获取类的构造器1. 获取类中所有的构造器2. 获取单个构造器 反射获取构造器的作用反射获取成员变量反射变量赋值、取值获取类的成员方法反射对象类方法执行 反射简易框架案例案例需求实现步骤代码如下 反射概述 什么是反射 反…

SpringCloud微服务-Eureka注册中心

Eureka注册中心 文章目录 Eureka注册中心前言1、Eureka的作用2、搭建EurekaServer3、服务注册4、启动多个实例5、服务拉取 -实现负载均衡 前言 在服务调用时产生的问题&#xff1a; //2. 利用RestTemplate发起HTTP请求&#xff0c;查询user String url "http://localho…

FinalShell控制远程Linux服务器(首先得自己已购买好Linux服务器并安装了对应的系统,这里是安装的centos系统)

1、电脑上需要安装FinalShell软件 可以到分享的链接中下载软件&#xff0c;然后双击点击下一步安装即可 链接&#xff1a;https://share.weiyun.com/Y6TrdDHp 密码&#xff1a;gbvyg62、建立远程连接 3、输入连接信息 4、显示连接主机成功&#xff0c;表示远程进入 5、输入…

代码随想录算法训练营第42天|● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

文章目录 1049.最后一块石头的重量II思路&#xff1a;动归五部曲代码&#xff1a; ● 494. 目标和思路五部曲1.确定dp数组五部曲2.确定dp公式3.dp初始化4.遍历顺序 代码&#xff1a; ● 474.一和零思路动归五部曲 代码&#xff1a; 1049.最后一块石头的重量II 思路&#xff1a;…

Excel数据表定制分组排序

实例需求&#xff1a;某学校体育活动统计表如下图左侧表格所示&#xff0c;数据按照班级排列&#xff0c;现在需要根据如下规格对表格进行排序 “幼儿”班级排列在表格最后按照“次数”降序排列“幼儿”班级同样按“次数”降序排列 排序结果如下图中右侧表格所示。 示例代码…

将法律条文很美观的复制到word上

前言 目前很多法律条款都没有现成的PDF或者word格式的供大家下载&#xff0c;这个时候呢&#xff0c;领导又要求你帮他搞定&#xff0c;这就很。。。。 步骤 复制全部条款到word中使用wps的排版功能&#xff0c;将空格和空段落全部移除 3. 设置好你需要的格式 标题&#xff…