Spring(一):简介

一、什么是Spring

广义上的 Spring 泛指以 Spring Framework 为核心的 Spring 技术栈。

经过十多年的发展,Spring 已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如 Spring Framework、Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等,其中 Spring Framework 是其他子项目的基础。

狭义的 Spring 特指 Spring Framework,通常我们将它称为 Spring 框架。

Spring 框架是一个分层的、面向切面的 Java 应用程序的一站式轻量级解决方案,它是 Spring 技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的。

这里我们也主要是学习狭义的Spring。

(以下信息来自百度百科)

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可

测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

中文名:Spring

框架外文名:Spring Framework

创建原因:软件开发的复杂性

目的:解决企业应用开发的复杂性

功能:使用基本的JavaBean代替EJB

范围:任何Java应用

简介:

Spring:

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

总而言之,spring是让现有的技术更加容易使用,整合了现有的技术框架。

Maven依赖:

二、Spring的优点

1.Spring是一个开源的免费的框架;

2.Spring是一个轻量级、非入侵式的框架;

3.Spring的核心是控制反转(IOC)和面向切面编程(AOP);

4.支持事务的处理,对框架整合的支持。

总而言之,Spring就是一个轻量级的控制反转和面向切面编程的框架。

Original: https://www.cnblogs.com/jmsstudy/p/16705230.html
Author: 谁知道水烫不烫
Title: Spring(一):简介

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/616438/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringBoot基础注解

    @SpringBootApplication:核心启动类,开启自动配置,相当于@SpringBootConfiguration+@EnableAutoConfiguration+@…

    Java 2023年6月8日
    076
  • SpringBoot 集成CAS简单学习

    CAS服务搭建 可以直接放在Tomcat中启动,这里可以为了方便直接用IDEA搭建启动。如果直接拉取示例代码以下内容都已修改完毕。拉取代码直接使用。 # 取消票根对应的Cookie…

    Java 2023年6月9日
    0109
  • DM5加密的工具类

    代码: import org.springframework.security.crypto.password.PasswordEncoder; import java.math….

    Java 2023年6月13日
    081
  • java基础-常用类

    以下为本人的学习笔记 1、内部类 分类: 1.内部类:成员内部类,静态内部类, 局部内部类(定义在方法内部),匿名内部类 概念:在一个类的内部再定义一个完整的类(类中类) 特点: …

    Java 2023年6月15日
    077
  • 关系型数据库的几种常用主键

    一般来说关系型数据库,绝大多数表都有数据库主键。 数据库主键的创建,一般有如下几种形式: 使用数据库自增长主键的语法。 有些数据库,比如 MS SQL Server, MySQL …

    Java 2023年6月9日
    069
  • 如何跳出页面的Frame框架

    很多网页都是框架结构的,在很多的情况下会通过按钮点击事件或链接,跳出框架转到其它界面。 使用的过程中会经常遇到跳不出框架的问题。 例如,修改个人密码的时候,当密码修改成功以后,需要…

    Java 2023年6月5日
    0110
  • SpringBoot 项目启动后立马执行某个方法

    因为自身做项目要用到,所以收集了一下大概有三种,目前使用 实现ApplicationRunner接口形式。 ​有一点小坑,因为我要调用的方法是要从配置文件中取值才行,但是这个实现A…

    Java 2023年6月7日
    077
  • 创建并操作循环链表

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月5日
    078
  • 数据索引

    索引的建立 create [unique唯一 | cluster 聚簇&#x7D22…

    Java 2023年6月9日
    076
  • asp.net实现视频在线播放

    利用ASP.net实现在线音频、视频播放功能ASP.net实现音乐,视频播放功能的实例:今天主要介绍的是借助于微软提供的Media Player插件来实现该插件默认是没有添在加工具…

    Java 2023年5月29日
    071
  • 常用Linux命令之文件相关命令(一)

    一、文件显示命令 1、cat命令: cat命令连接文件并打印到标准输出设备上,经常用来显示文件的内容,相当于DOS下的type命令 cat命令的一般格式: cat [选项] 文件名…

    Java 2023年6月8日
    0138
  • 单核CPU、多个CPU(路)、超线程技术、多核CPU(物理核、逻辑核)

    1.单核CPU 路、CPU、物理核、逻辑核和超线程概念 一个服务器主板可以插多个CPU称为多路,一个CPU可以有多个物理核。如果开启了超线程,一个物理核可以分成n个逻辑核(一般是2…

    Java 2023年5月30日
    086
  • Spring(四)-声明式事务

    Spring-04 声明式事务 1、事务的定义 事务就是由 一组逻辑上紧密关联的 多个工作单元(数据库操作)而合并成一个整体,这些操作 要么都执行,要么都不执行。 2、事务的特性:…

    Java 2023年6月15日
    066
  • 微服务SpringCloud之注册中心Consul

    Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更&#822…

    Java 2023年5月30日
    0117
  • 2、String类

    常用方法 equals // 区分大小写,判断内容是否相等 equalsIgnoreCase // 忽略大小写的判断内容是否相等 length //获取字符的个数,字符串的长度 i…

    Java 2023年6月7日
    090
  • AFNetworking 遇到错误 Code=-1016 “Request failed: unacceptable content-type: text/plain”

    解决 AFNetworking 遇到 unacceptable content-type 问题。 在开发过程使用了AFNetworking库,版本2.x,先运行第一个官方例子(替换…

    Java 2023年6月6日
    0106
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球