Spring 初识
一、Spring是什么?
首先可以进入Spring官网 https://spring.io/ 看一下相关介绍。
Spring为开发者提供了一站式的轻量级应用开发平台。简单来说,Spring为开发者提供了一系列的开发工具和框架,减少重复造轮子,方便开发,提高开发效率。
需要注意的是Spring不单单是一个开发框架,而是一个应用开发平台,包含了多个子项目。常见的有:
- Spring Framwork
- Spring boot
- Spring cloud
- Spring Security
- ...
Spring类似于计算机的操作系统,为企业级应用开发提供了平台支撑,主要抽象了企业级应用开发中可能遇到的共性问题,提供了一套统一的解决方案。
下图为Spring的整体架构图。
Spring分为三个层次,分别是core、component、application,即核心、组件和应用三个层次。Spring Core 是 Spring 的核心,主要包含 Spring IoC 和 Spring AOP,是其他Spring模块实现的基础。Spring Component 包含各种基于Spring Core常用开发组件,比如Spring MVC能够加快Web应用开发;Spring JDBC 封装了基本的数据库操作,还提供了对常见ORM的封装,能够使应用方便使用数据库。Spring Application 包含了Spring 平台中的一些其他子项目,比如提供安全功能的Spring Security等。
Spring的学习也以这三个层次为主线展开。核心是掌握Spring Core 和 Spring Component 的使用和实现。通过阅读和分析Spring框架源码,理解Spring设计思想,更好地指导我使用Spring开发。Spring源码中涉及大量的设计模式使用,阅读过程中需要了解常见的设计模式。
二、Spring IoC 概述
IoC(Inversion of Control)即控制反转,也叫DI(Dependence Injection)依赖注入。IOC要解决的是对象依赖的问题,优秀的系统主要通过对象间协作配合实现相关功能,系统中存在大量的对象依赖关系,传统的方式是通过依赖者直接管理其依赖的对象,会导致代码高度耦合和可测试性降低,依赖对象修改,调用对象也需要相应修改。IOC通过使用容器统一管理应用中对象和对象间的关系,某对象如果依赖其他对象,需要从IOC容器获取目标依赖对象。通过使用容器统一管理对象和对象依赖关系,极大地简化了应用开发和维护。
IoC可以以图书馆作为类比,通常我们要阅读书籍,通常需要购买并保管书,但是对于大部分人来说购买和保管的成本较高,可能有些人只是最近暂时想阅读相关书籍,没必要去购买,或是只是想阅读相关书籍,以后可能也不会看了,也没必要自己长久保存。针对这种情况,图书馆就发挥作用了,我们可以从图书借书,看完再归还,书籍由图书馆统一管理,读者省去了很多烦扰。简而言之,每个读者不需要独立购买和保管想看的书籍,交由图书馆统一管理,这就是一种IoC的模型。
三、Spring AOP 概述
AOP是Aspect-Oriented Programming 的简称,中文意思是面向切面编程。AOP本质上是一种模块化机制,将分散在应用中的用于解决特定领域问题的代码抽取成单独的模块,统一维护。同时应用中业务逻辑代码和用于解决特定领域问题的代码之间的关系将通过AOP中切面来封装、组织和维护。比如对于日志功能,在应用中的各个地方都会用到,一般都是通过直接调用日志模块的相关方法,打印相关日志,这样会导致日志功能代码和业务逻辑代码显示耦合在一起,虽然能控制打印内容,但不能灵活控制日志执行场景,比如在哪个方法中执行,在方法的那个阶段执行等。通过使用AOP能够灵活地实现这些功能。Spring AOP是针对AOP的一种解决方案,主要通过动态代理的方式实现对代码的拦截并切入相关功能。
Spring 初识的更多相关文章
- 菜鸟学习Spring——初识Spring
一.概念. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Develop ...
- Spring初识(通过小实例清晰认识Spring)
1.spring架构: spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,iba ...
- spring初识
Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的.Spring的用途不仅限于服务器端的开发.从简单性.可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益. Sp ...
- Java使用Spring初识
1.首先是引用了,然后pom.xml如下: <dependency> <groupId>org.springframework</groupId> <arti ...
- [Spring]初识Spring-Spring的基础使用-如何通过Bean来实例化?
Spring框架的基础使用 XML配置信息,Bean的不同实例化方式,注入 实例化 XML文件中的参数设置 1.通过构造器进行实例化(重点,常用方式) <bean name="aCls ...
- [Spring]初识Spring-Spring是什么?如何实例化一个Spring容器?
关于Spring入门的基础知识点 Spring简介 Spring是由Rod Johnson创建的轻量型容器,目的在于简化企业级开发.是一种容器框架 a.降低侵入性 b.提供了IOC(控制反转)和AOP ...
- Day2 Spring初识(二)
Bean的实例化 bean实例化方式有3种:默认构造.静态工厂.实例工厂 默认构造 调用无参构造, 属性+setter User.java package entity; public class U ...
- Day1 Spring初识(一)
在网上看到一篇文章,感觉写得挺不错的,转载一下,本文转载自:http://www.cnblogs.com/xdp-gacl/p/3707631.html和http://www.cnblogs.com/ ...
- Spring初识、新建工程
1.spring与三层架构的关系: spring负责管理项目中的所有对象,是一个一站式的框架,容器中的对象决定了spring的功能. 2.spring核心架构 Spring框架主要由六个模块组成,在开 ...
随机推荐
- 微信小程序自定义字体及自定义图标问题说明
自定义图标及自定义字体,一直是很多小程序开发者的心病,其实本站是很多解决方案的,为了集中起来,方便直接跳过此坑,我特别做了这次针对字体及字体图标的跳坑: 相关文章:微信小程序添加并使用外部字体(成功添 ...
- 机器学习python常用模块
.Pickle模块 打包,解压训练模型 .pysnooper 调试打印日志
- sudo 及visudo用法
visudo 编辑sudoers文件 1.命令功能 bisudo命令是专门用来编辑/etc/sudoers文件,同时提供语法检查等功能./etc/sudoes文件是sudo命令的配置文件. 2.语法格 ...
- Eureka实现高可用及为Eureka设置登录账号和密码
本文通过两个eureka相互注册实现注册中心的高可用,同时为注册中心配置认证登录. 需要用到的maven配置 <dependency> <groupId>org.springf ...
- vue-awesome-swiper 轮播图使用
最近在做vue 的轮播图的问题,项目中也遇到一些问题,查了 swiper 官网资料, 还有vue-awesome-swiper的文案,最后把怎么使用这个插件简单的说下,啥东西都需要自己实践下,还是老规 ...
- 一种循环C字符数组的骚操作
#include <stdio.h> #include <stdlib.h> int main() { char wenwa[] = "程劲小盆友在做什么" ...
- 【NOIP2016提高A组五校联考1】挖金矿
题目 分析 我们二分答案 设\(sum_{i,j}\)表示的i列前个数的和, 假设当前出的二分答案为x,第i列挖了\(h_j\)层,则 \[\dfrac{\sum_{i=1}^{n}sum_{i,h_ ...
- 怎样将shp文件的坐标点导出来?
方法一: 1.将线矢量转化为点矢量 具体操作步骤如下: (1)arctoolbox\Data Management tools\Features\双击Feature Vertices to point ...
- shell练习--PAT题目1003:我要通过!(成功案例)
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: ...
- vue - 登录验证与权限控制
描述具体问题 需求 业务系统通常需要登录才能访问受限资源,在用户未登录情况下访问受限资源需要重定向到登录页面: 多个业务系统之间要实现单点登录,即在一个系统或应用已登录的情况下,再访问另一个系统时不需 ...