Spring入门,看这篇就够了

Spring入门,看这篇就够了


文章目录

  • Spring入门,看这篇就够了
    • 一、 初识Spring
    • 二、Spring Framework系统架构
    • 三、核心概念
      • 1.IoC(inversion of control)控制反转
      • 2.Bean
      • 3.DI(dependency injection)依赖注入
    • 四、IoC入门案例(以Maven项目为例)
      • 1.前期准备
      • 2.导入坐标
      • 3.编写配置文件
      • 4.测试类编写
    • 五、总结


一、 初识Spring

Spring技术是JavaEE开发的必备技能,企业开发技术选型命中率大于90%。从专业的角度讲,Spring降低了企业级开发的复杂性(简化开发),高效整合其他技术,提高企业级应用开发与运行效率(框架整合)。Spring提供了两个打的核心技术IoC和AOP技术,基于AOP技术之上,又提出了事务处理等核心技术。
Spring发展到今天已经形成了一种开发的生态圈,spring提供了若干个项目,每个项目用于完成特定的功能,我们称之为spring全家桶。
图片来源 黑马程序员课程截图
Spring framework是spring生态圈中最基础的项目,是其他思想的根基,我们通常把Spring framework称之为spring。一下我们将对spring展开学习。


二、Spring Framework系统架构

图片来源 黑马程序员课程截图通过系统架构可以看出,我们要学习Spring技术,第一个要学习的内容就是Core Container(核心容器),因为他是用于封装对象的,而所有的一切都是基于对象展开学习的。

三、核心概念

1.IoC(inversion of control)控制反转

对于初学者学习Spring之前,写代码的通常是以new的方式产生对象,这样当业务功能发生改变时,源码也需要发生改变,模块的耦合性很高。为了解决这个问题,提出了对象的创建控制权由程序转移到外部,这种思想就被称为控制反转。简单来说,使用对象时,由主动new产生对象转换成为由外部提供对象,此过程中对象的创建控制权由程序转移到外部,其思想称为控制反转。
Spring技术对IOC思想进行了实现:Spring提供了一个容器,称为IOC容器,用于充当IOC思想中的“外部”。

2.Bean

IOC容器负责对象的创建、初始化等一系列工作,被创建或者被管理的对象在IOC容器中称为Bean。

3.DI(dependency injection)依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入。
介绍完这些基础概念,当然少不了编程实践啦,各位主公是不是已经等不及要上手试试效果了,那就让我们用下面的入门案例,来感受一下Spring的魅力吧!

四、IoC入门案例(以Maven项目为例)

1.前期准备

对象是基础,Spring的核心也是对对象的管理,所以首先需要创建Bean的接口和具体的实现类。以Maven项目为例,创建过程相信各位主公已经轻车熟路啦,这里就不做过多赘述了。首先根据我们前期所学的知识,分别创建Dao层的Service层接口和实现类:

Dao层接口代码如下:

package com.itxiaobai.spring;
public interface BookDao {void save();
}

这里我们只需要简单的打印一句话,用于查看效果就好啦。

Dao层代码实现如下:

package com.itxiaobai.spring;
public class BookDaoImpl implements BookDao {@Overridepublic void save() {System.out.println("book dao save......");} 
}

Service层接口如下:

package com.itxiaobai.spring;
public interface BookService {void save();
}

Service层实现类如下:

package com.itxiaobai.spring;
public class BookServiceImpl implements BookService{BookDao bookDao ;public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}@Overridepublic void save() {System.out.println("book service save......");bookDao.save();}
}

2.导入坐标

使用Maven工具管理项目,我们需要导入Spring对应的Maven坐标。

Spring坐标导入:

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.5.RELEASE</version>
</dependency>

3.编写配置文件

Bean对象创建完成,Spring坐标也导入完成以后,如何将被管理的对象告知IoC容器呢?我们需要使用配置文件的方式。在resources文件夹下创建applicationContext.xml文件。在该文件中完成对应bean的配置,其中配置代码如下:

配置bean:

  <bean id = "BookDao" class = "com.itxiaobai.spring.BookDaoImpl" /><bean id = "BookService" class = "com.itxiaobai.spring.BookServiceImpl" />

配置DI:

  <bean id = "BookDao" class = "com.itxiaobai.spring.BookDaoImpl" /><bean id = "BookService" class = "com.itxiaobai.spring.BookServiceImpl"><property name="bookDao" ref="BookDao"/><!--手动注入--><!--Property标签标示配置当前bean的属性,name属性标示配置哪一个具体的属性,ref标签标示参照哪一个bean --><bean/>

其中,id表示可以随便起,但是尽量符合java编写规范,class的值为对应实现类的包全名。

4.测试类编写

完成以上内容以后,Spring的准备工作基本上就完成了,这个时候就可以编写测试类查看成果了。

测试类代码展示:

package com.itxiaobai.spring;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//传统方法,高内聚
//        BookService bookService = new BookServiceImpl();
//        bookService.save();//获取IOC容器ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");ctx.registerShutdownHook();//关闭虚拟机前关闭所有容器/* BookDao bookDao = (BookDao) ctx.getBean("BookDao");bookDao.save();*/
//       ctx.close();//暴力关闭//获取bean,这里的BookService就是我们前面在配置文件中Id处起的名字;BookService bookService =(BookService) ctx.getBean("BookService");bookService.save();}
}

以上,一个简单的Spring入门案例就完成啦,一起看一下测试结果吧!
效果截图


五、总结

Spring 的灵活库受到全世界开发人员的信赖。 Spring 灵活而全面的扩展集和第三方库让开发人员可以构建几乎任何可以想象的应用程序。 在其核心,Spring Framework 的 控制反转 (IoC) 和 依赖注入 (DI) 特性为广泛的特性和功能集提供了基础。 无论您是为 Web 构建安全、反应式、基于云的微服务,还是为企业构建复杂的流数据流,Spring 都有可以提供帮助的工具。 如果这篇文章给您提供了帮助,或者提起了您对Spring学习的欲望,就点个关注吧,我将继续更新相关内容,如有问题,还请各位主公批评指正。

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

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

相关文章

Spring 入门教程

Spring 入门教程 1、参考资料 尚硅谷-Spring5框架最新版教程&#xff08;idea版&#xff09;雷丰阳spring、springmvc、mybatis、spring一站式学习 项目地址&#xff1a;Oneby / spring-learn 2、Spring 概述 2.1、Spring 框架概述 Spring 是轻量级的开源的 JavaEE 框架 Sp…

一文学会Spring,Spring最简单的入门教程(万字好文)

1.Spring概述 1.1 Spring框架是什么 ​ Spring是与2003年兴起的一个轻量级的Java开发框架&#xff0c;它是为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面编程(AOP)。Spring是可以在Java SE/EE中使用的轻量级开源框架。 ​ Spring的主要作用…

阿里云的内容识别技术可以实现哪些场景下的智能化应用?

阿里云的内容识别技术可以实现哪些场景下的智能化应用&#xff1f; [本文由阿里云代理商[聚搜云]撰写]   随着人工智能技术的快速发展&#xff0c;阿里云借助自身的技术和资源优势&#xff0c;开发了一种名为“内容识别”的技术。这项技术能够高效、准确地识别出图片、视频、…

装饰器模式:实现类功能的动态扩展

一&#xff0c;简介 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许在不修改原有类结构的情况下&#xff0c;给一个对象动态添加额外的职责。通常情况下&#xff0c;扩展一个类的功能我们首先会想到用继承方式来实现&#xff0c…

One2Multi Graph Autoencoder for Multi-view Graph Clustering

One2Multi Graph Autoencoder for Multi-view Graph Clustering | Proceedings of The Web Conference 2020 (acm.org) 目录 Abstract 1 Introduction 2 Model 2.1 Overview 2.2 One2Multi Graph Convolutional Autoencoder Informative graph convolutional encoder M…

linux常见的二十多个指令

目录 一、指令的概念 二、28个常见的指令 ⭐2.1 ls指令 ⭐2.2 pwd指令 ⭐2.3 cd指令 ⭐2.4tree指令 ⭐2.5 mkdir指令 ⭐2.6 touch指令 ⭐2.7 rmdir指令 ⭐2.8 rm指令 ⭐2.9 clear指令 ⭐2.10 man指令 ⭐2.11 cp指令 ⭐2.12 mv指令 ⭐2.13 cat指令&#xff08;适…

Python画五角星(turtle初识)

Python可以做很多事情&#xff0c;主要归功于python下的各种模块。画图也不例外&#xff0c;通过简单地turtle模块&#xff0c;可以画出各种图案。 首先&#xff0c;使用python画图&#xff0c;需要安装turtle模块。在控制台输入pip install turtle执行 import turtle turtle.…

用python的turtle画五角星

最近开始学python&#xff0c;做作业的时候遇到画五角星并填充颜色。网上搜到的方法是画五条直线&#xff0c;但是作业要求的图形是这样 #用循环结构画五角星 import turtle from turtle import *turtle.delay(2) #定义一个画五角星的函数 def stardraw(start_position,side)…

Python turtle教程一:画箭头、矩形,五角星(亲测,可用)

Turtle库是Python语言中一个很流行的绘制图像的函数库&#xff0c;想象一个小乌龟&#xff0c;在一个横轴为x、纵轴为y的坐标系原点&#xff0c;(0,0)位置开始&#xff0c;它根据一组函数指令的控制&#xff0c;在这个平面坐标系中移动&#xff0c;从而在它爬行的路径上绘制了图…

初学Python画五角星

这学期开的Python课&#xff0c;之前学过java&#xff0c;c还有HTML5/css&#xff0c;不过感觉自己并不是学这些的料&#xff0c;这个是老师布置的作业&#xff0c;让我们自己画个图&#xff0c;就画了个简单的&#xff0c;心血来潮想写个博客&#xff0c;就直接上图了吧&#…

python画多层次五角星

此次用到海龟绘图函数——turtle&#xff0c;下面是程序中可能会用到的方法 forward() #前进 right() #右转 exitonclick() #绘制完退出Next ,show time! 1.创建一个python项目文件 2.分析单个五角星画法 我们默认每次画笔右转144度画五角星的一个角&#xff0c;那么画笔右转…

python画五角星

python画五角星 今天刚学python海龟画图&#xff0c;课堂作业画五角星&#xff0c;顺便分享给大家。 运行图片如下&#xff1a; 代码如下&#xff1a; # 以画布中心为中点&#xff0c;向右为X轴正方向&#xff0c;向上为Y轴正方向 import turtle turtle.setup(500, 500) #…

HTML5-画一个简单五角星

HTML5-画一个简单五角星 <!DOCTYPE HTML><html><body><canvas id"myCanvas" width"200" height"200" style"border:1px solid #c3c3c3;" mce_style"border:1px solid #c3c3c3;">Your browser does …

玩转Python之Turtle画五角星

Turtle库是Python语言中一个很流行的绘制图像的函数库&#xff0c;下面就给大家分享用Turtle画五角星&#xff1a; #codingutf-8 import turtle import time turtle.pensize(5) turtle.pencolor(“yellow”) turtle.fillcolor(“red”) turtle.begin_fill() for _ in range(5…

使用 opencv 画 五角星

// 绘制多边形 void CV120201012Dlg::mutiplyDraw() { // 定义一张背景板 Mat img Mat(Size(800, 800), CV_8UC3); img Scalar(0, 0, 0); // 定义5个顶点坐标 Point p1(439, 126); Point p2(466, 198); Point p3(546, 198); Point p4(482, 244);…

用OpenGL画五角星

第一次写博客&#xff0c;正在上大二&#xff0c;学的计算机专业&#xff0c;因为课很杂&#xff0c;想把自己学过的东西顺便写下来做个记录&#xff0c;写的不好请见谅&#xff01; 这个学期学的图形学&#xff0c;主要是讲OpenGL的东西&#xff0c;老师让我们自己用GL_LINES、…

画七彩五角星

using (Graphics graphics this.CreateGraphics()){graphics.Clear(Color.White); Point[] points {//顺时针点坐标new Point(80, 0), new Point(100, 60), new Point(160, 60), new Point(110, 100),new Point(130, 160), new Point(80, 120), new Point(30, 160), new Poi…

【C语言】结构体——我就是秩序的创建者!(结构体数组、结构体指针、嵌套、匿名、字面量、伸缩型数组、链式结构)

一、结构体基础1.1 声明和定义1.1 初始化和赋值1.3 访问结构体成员 二、结构体数组2.1 定义和初始化2.2 访问 三、结构体的嵌套五、指向结构体的指针六、向函数传递结构体6.1 只传递结构体成员6.2 传递结构体指针6.3 传递结构体 七、结构体的其他特性——不容小觑7.1 结构体的大…

阿里云的云安全审计可以用于哪些安全事件与合规审核?

阿里云的云安全审计可以用于哪些安全事件与合规审核&#xff1f; [本文由阿里云代理商[聚搜云www.4526.cn]撰写] 随着互联网的高速发展&#xff0c;各种互联网应用和服务也在不断涌现。但在运营过程中&#xff0c;安全事件和合规审核问题也不断出现。如何及时、准确地识别并解决…

通俗易懂讲PIC单片机:从一窍不通到入门进步

单片机入门不难------谈PIC系列&#xff08;转自矿石收音机论坛---崂山&#xff09;十年前的老帖子&#xff0c;讲得通俗易懂&#xff0c;分享之。 请看图1 这个8条腿的小螃蟹就是我们的第一顿饭&#xff0c;只要把它吃下去&#xff0c;以后的大餐就好办了。第1、8条腿接电源 …