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://www.mzph.cn/news/707556.shtml

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

相关文章

密码学系列(四)——对称密码2

一、RC4 RC4&#xff08;Rivest Cipher 4&#xff09;是一种对称流密码算法&#xff0c;由Ron Rivest于1987年设计。它以其简单性和高速性而闻名&#xff0c;并广泛应用于网络通信和安全协议中。下面是对RC4的详细介绍&#xff1a; 密钥长度&#xff1a; RC4的密钥长度可变&am…

GPT 的基础 - T(Transformer)

我们知道GPT的含义是&#xff1a; Generative - 生成下一个词 Pre-trained - 文本预训练 Transformer - 基于Transformer架构 我们看到Transformer模型是GPT的基础&#xff0c;这篇博客梳理了一下Transformer的知识点。 BERT: 用于语言理解。&#xff08;Transformer的Encoder…

九州金榜|父亲在教育中的作用及重要性

随着社会进步&#xff0c;对比以前教育&#xff0c;现在父亲在教育中的作用越来越明显&#xff0c;孩子的教育离不开父亲&#xff0c;父亲在孩子教育中有什么作用&#xff1f;重要性又是什么呢&#xff1f;下面九州金榜家庭教育就带大家一起分析一下作为父亲&#xff0c;在孩子…

VUE3搭载到服务器

1.搭建服务器 使用 Windows 自带的 IIS 作为服务器。 步骤如下&#xff1a;https://blog.csdn.net/qq_62464995/article/details/130140673 同时&#xff0c;上面的步骤中&#xff0c;还使用了 cpolar 将 IIS 本地网址映射到公共网址。 注&#xff1a; cpolar客户端&#xf…

Ant for Blazor做单个表的增删查改

Ant for Blazor做单个表的增删查改 2024年02月27日花了一天时间弄出来了&#xff0c;基本弄好了&#xff0c;vs2022blazor servernet8,引用的AntDesign版本是0.17.4 代码里的model和repository是用自己牛腩代码生成器生成的东西&#xff0c;sqlsugar的&#xff0c;记得在prog…

括号生成(力扣题目22)

题目描述&#xff1a; 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()&q…

Modern C++ std::any的实现原理

1. 前言 std::any 是 C17 中引入的一个新特性&#xff0c;它是一个类型安全的容器&#xff0c;可以在其中存储任何类型(但此类型必须可拷贝构造)的值&#xff0c;包括基本类型、自定义类型、指针等。相比于void* 指针&#xff0c;std::any 更为类型安全&#xff0c;可以避免由…

NC65 rest接口 开发 NC65接口开发

一、在对应模块META-INF下编写 xxx.rest 文件,也要放在Home里对应的目录下。 二、开发接口&#xff0c;继承extends AbstractUAPRestResource&#xff0c;&#xff08;有的项目会继承别的方法如&#xff1a;AbstractNCCRestResource&#xff0c;MTFRestResource&#xff1b;有…

使用 kubeadm 部署k8s集群

一、所有节点系统初始化 1、常规初始化 2、内核版本升级以及内核限制文件参数修改 还可以考虑将旧版本的内核卸载 二、准备nginx负载均衡器和keepalived nginx四层代理&#xff1a; keepalived配置&#xff1a; nginx检测脚本&#xff1a; 三、所有节点部署docker&#xff0c…

SQL函数学习记录

聚合函数 函数是编程语言的基础之一&#xff0c;在对数字的运算中&#xff0c;我们用的最多的就是聚合函数&#xff0c;本篇接下来就详细阐述下SQL中聚合函数的运用。 什么是聚合函数&#xff08;aggregate function&#xff09;&#xff1f; 聚合函数指的是对一组值执行计算…

2023秋季飞书未来无限大会--随笔

这个时代的飞书 数字时代 工作协同平台 AI时代 帮助企业和个人用好AI 企业如何引用大模型能力&#xff1f; 智慧体— 接近人&#xff0c;有进步空间智能伙伴 用时代的科技打造爱不释手的好产品 移动互联网 – 改变信息分发方式 大模型 –自然的人机交互方式 业务协同 …

如何使用便签快速分类工作待办事项

在日常工作和生活中&#xff0c;我们经常需要处理各种各样的待办事项。而有效地分类这些任务&#xff0c;可以帮助我们更好地管理时间和提高工作效率。使用便签是一种简单而实用的方法&#xff0c;下面将介绍如何利用好用便签来快速分类工作待办事项。 首先&#xff0c;你可以…

【数据结构和算法初阶(C语言)】链表-单链表(手撕详讲单链表增删查改)

目录 1.前言&#xff1a;顺序表回顾&#xff1a; 1.1顺序表的优缺点 2.主角----链表 2.1链表的概念 2.2定义一个单链表的具体实现代码方式 3.单链表对数据的管理----增删查改 3.1单链表的创建 3.2单链表的遍历实现 3.2.1利用遍历实现一个打印我们链表内容的函数的函数…

【前端素材】推荐优质后台管理系统Salreo平台模板(附源码)

一、需求分析 当我们从多个层次来详细分析后台管理系统时&#xff0c;可以将其功能和定义进一步细分&#xff0c;以便更好地理解其在不同方面的作用和实际运作。 1. 结构层次 在结构层次上&#xff0c;后台管理系统可以分为以下几个部分&#xff1a; a. 辅助功能模块&#…

Mycat核心教程--ZooKeeper集群搭建【三】

Mycat核心教程--ZooKeeper集群搭建 八、 ZooKeeper集群搭建8.1.ZooKeeper简介8.2.数据复制的好处8.3.Zookeeper设计目的8.4.zookeeper集群包括3种角色8.4.1.Leader角色8.4.2.Follower 角色8.4.3.Observer 角色 8.5.zookeeper集群工作流程8.6.zookeeper集群节点数量为奇数&#…

JS进阶——深入对象

版权声明 本文章来源于B站上的某马课程&#xff0c;由本人整理&#xff0c;仅供学习交流使用。如涉及侵权问题&#xff0c;请立即与本人联系&#xff0c;本人将积极配合删除相关内容。感谢理解和支持&#xff0c;本人致力于维护原创作品的权益&#xff0c;共同营造一个尊重知识…

liunx操作系统 进程的基本概念

进程的基本概念 计算机结构体系冯诺依曼 操作系统的管理进程进程的特性标识符系统的调用 创建新的进程 进程的状态进程队列进程的状态在liunx查看进程状态、 计算机结构体系 冯诺依曼 在没有存储器之前&#xff0c;所有的信息都是直接进入CPU&#xff0c;这样效率很差&#xf…

智慧公厕:打造智慧城市环境卫生新标杆

随着科技的不断发展和城市化进程的加速推进&#xff0c;智慧城市建设已经成为各地政府和企业关注的焦点。而作为智慧城市环境卫生管理的基础设施&#xff0c;智慧公厕的建设和发展也备受重视&#xff0c;被誉为智慧城市的新标杆。本文以智慧公厕源头厂家广州中期科技有限公司&a…

Java代码实现获取本机服务的IP地址

要通过Java代码获取一个IP地址的信息&#xff0c;你可以使用多种方法。其中一种常见的做法是通过IP地址查询服务API来获取详细信息&#xff0c;比如地理位置、ISP&#xff08;互联网服务提供商&#xff09;等。这里有一个简单的例子&#xff0c;展示如何使用Java代码调用一个公…

RRT算法学习及MATLAB演示

文章目录 1 前言2 算法简介3 MATLAB实现3.1 定义地图3.2 绘制地图3.3 定义参数3.4 绘制起点和终点3.5 RRT算法3.5.1 代码3.5.2 效果3.5.3 代码解读 4 参考5 完整代码 1 前言 RRT&#xff08;Rapid Random Tree&#xff09;算法&#xff0c;即快速随机树算法&#xff0c;是LaVa…