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框架主要由六个模块组成,在开 ...
随机推荐
- 什么是file_sort?如何避免file_sort
阿里巴巴编码规范有这么一例 [推荐]如果有order by场景,请注意利用索引的有序性. order by最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况,影 ...
- TanksWar(坦克大战三维、二维版以及90版)
本文已迁移至:https://coco56.blog.csdn.net/article/details/103198945
- Linux目录的切换
pwd:显示当前所在目录 ~:root目录 /:根目录 ls:查看当前目录下所有的文件和目录 cd usr 切换到该目录下usr目录 cd ../ 切换到上一层目录 cd / 切换到系统根目录 cd ...
- ui自动化之selenium操作(五)简单元素操作--续
1. 多窗口切换 有时候需要在多窗口切换,webdriver提供了switch_to_window()方法支持切换窗口: from selenium import webdriver import o ...
- MYSQL利用merge存储引擎来实现分表
创建user1和user2两个分表 建表语句如下:只是表名不一样,其他字段信息及主键一致. CREATE TABLE IF NOT EXISTS user1( id INT(11) NOT NUL ...
- CentOS升级乱七八糟问题解决
----------------------------------------------------------------- Error: Package: libgpod--.el7.x86_ ...
- CodeForces-687A(DFS,染色)
链接: https://vjudge.net/problem/CodeForces-687A 题意: Recently, Pari and Arya did some research about N ...
- MySQL报错:Cause: java.sql.SQLException: Incorrect string value: '\xE6\x9D\xA8","...' for column 'obj_value' at row 1
1.插入MySQL表时,报错:Cause: java.sql.SQLException: Incorrect string value: '\xE6\x9D\xA8","...' ...
- 页面渲染机制(一、DOM和CSSOM树的构建)
1.HTML的加载 HTML是一个网页的基础,下载完成后解析 2.其他静态资源加载 解析HTML时,发现其中有其他外部资源链接比如CSS.JS.图片等,会立即启用别的线程下载. 但当外部资源是JS时, ...
- MySQL_DQL操作
DQL(Data Query Language)简单的来说就是数据的查询语言. 1.最简单的查询(显示表中的所有信息) 语法: select * from 表名; 2.普通查询 语法: select ...