一、Spring介绍

简介

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform

Spring 框架为现代基于 java 的企业应用程序提供了一个全面的编程和配置模型——适用于任何类型的部署平台。

特点、主要特点

1、非侵入式

2、容器

3、IoC

4、AOP

5、方便程序的测试

为什么要学?

主流市场推荐、学习的人数多、Spring社区活跃、工作需要、属于开源框架、方便web开发、集成度高。

还因为Spring具有 以下优点:

  • 轻量级:相较于EJB容器,Spring采用的IoC容器非常的轻量级,基础版本的Spring框架大约只有2MB。Spring可以让开发者们仅仅使用POJO(Plain Old Java Object,相对于EJB)就能够开发出企业级的应用。这样做的好处是,你不需要使用臃肿庞大的 EJB容器(应用服务器),你只需要轻量的servlet容器(如Tomcat)。尤其在一些开发当中,很稀缺内存和CPU资源时,采用Spring比EJB无论是开发还是部署应用都更节约资源。
  • 控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
  • 面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
  • MVC框架:Spring MVC是一个非常好的MVC框架,可以替换其他web框架诸如Struts。
  • 集成性:Spring非常容易和其他的流行框架一起集成开发,这些框架包括:ORM框架,logging框架,JEE, Quartz,以及Struts等表现层框架。
  • 事务管理:Spring强大的事务管理功能,能够处理本地事务(一个数据库)或是全局事务(多个数据,采用JTA)。
  • 模块分离:Spring框架是由模块构成的。虽然已经有太多的包和类了,但它们都按照模块分好类了,你只需要考虑你会用到的模块,而不用理其他的模块。
  • 异常处理:由于Java的JDBC,Hibernate等API中有很多方法抛出的是checked exception,而很多开发者并不能很好的处理异常。Spring提供了统一的API将这些checked exception的异常转换成Spring的unchecked exception。
  • 单元测试:Spring写出来的代码非常容易做单元测试,可以采用依赖注射(Dependency Injection)将测试的数据注射到程序中。

Spring框架体系结构:

二、IOC(依赖注入)

Spring 容器IOC 和 bean介绍

This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies (that is, the other objects they work with) only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean. This process is fundamentally the inverse (hence the name, Inversion of Control) of the bean itself controlling the instantiation or location of its dependencies by using direct construction of classes or a mechanism such as the Service Locator pattern. --spring官网

本章介绍了控制反转原则的 Spring 框架实现。也被称为依赖注入。这是一个过程,对象仅通过构造函数参数、工厂方法的参数或者在对象实例被构造或者从工厂方法返回后在其上设置的属性来定义它们的依赖关系(也就是说,它们使用的其他对象)。然后容器在创建 bean 时注入这些依赖项。这个过程从根本上来说是 bean 本身的逆过程(因此得名为控制反转) ,通过使用类的直接构造或服务定位器模式之类的机制来控制其依赖项的实例化或位置。

上面的话,简单的说就是 使用对象的人并不和对象有直接关联。

控制反转:

控制反转(Inversion of Control)是说创建对象的控制权发生转移,以前创建对象的主动权和创建时机由应用程序把控,而现在这种权利转交给 IoC 容器,它就是一个专门用来创建对象的工厂,你需要什么对象,它就给你什么对象。有了 IoC 容器,依赖关系就改变了,原先的依赖关系就没了,它们都依赖 IoC容器了,通过 IoC 容器来建立它们之间的关系。

容器概述:

The org.springframework.context.ApplicationContext interface represents the Spring IoC container and is responsible for instantiating, configuring, and assembling the beans.

  1. Spring IOC容器就是一个org.springframework.context.ApplicationContext的实例化对象

  2. 容器负责了实例化,配置以及装配一个bean

ApplicationContext 接口表示 Spring IoC 容器,负责实例化、配置和装配 bean。容器通过读取配置元数据获取关于实例化、配置和组装什么对象的指令。配置元数据用 XML、 Java 注释或 Java 代码表示。它允许您表达组成应用程序的对象以及这些对象之间丰富的相互依赖关系。

  • ClassPathXmlApplicationContext

  • FileSystemXmlApplicationContext

Spring 如何工作?

  • Spring容器通过我们提交的pojo类以及配置元数据产生一个充分配置的可以使用的系统

  • 这里说的配置元数据,实际上我们就是我们提供的XML配置文件,或者通过注解方式提供的一些配置信息

bean介绍

在 Spring 中,构成应用程序主干的对象和由 Spring IoC 容器管理的对象称为 bean。Bean 是由 Spring IoC 容器实例化、组装和管理的对象。否则,bean 只是应用程序中的许多对象之一。

配置元数据

  • 传统上,配置元数据是以一种简单和直观的 XML 格式提供的

  • 现在,大部分使用注解方式。

基本结构

下面的示例显示了基于 xml 的配置元数据的基本结构:<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="..." class="...">  <!-- collaborators and configuration for this bean go here --></bean><bean id="..." class="..."><!-- collaborators and configuration for this bean go here --></bean><!-- more bean definitions go here --></beans>
  • id 属性是标识单个 bean 定义的字符串

  • class 属性是全限定类名

AOP

面向切面编程,是针对面向对象编程的一种补充,同时也是spring中第二个最核心的功能,例如可以进行权限认证,日志输出等,可以无侵入的对原来的功能进行切面加入自定义的非业务功能。

自言自语

重新学习Spring 的第一天,又开始了天天光顾Spring官网的日子。

Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring相关推荐

  1. 批处理框架spring batch基础知识介绍

    Table of Contents spring batch简介 Spring Batch架构介绍 Spring Batch核心概念介绍 什么是Job 什么是JobInstance 什么是JobPar ...

  2. spring el表达式解析_Spring之旅第一篇-初识Spring

    目录 一.概述 二.模块 三.动手创建 一.概述 只要用框架开发java,一定躲不过spring,Spring是一个轻量级的Java开源框架,存在的目的是用于构建轻量级的J2EE应用.Spring的核 ...

  3. spring根据名称获取bean_带你从零开始手写 spring ioc 框架,深入学习 spring 源码

    IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...

  4. Spring入门篇——第6章 Spring AOP的API介绍

    第6章 Spring AOP的API介绍 主要介绍Spring AOP中常用的API. 6-1 Spring AOP API的Pointcut.advice概念及应用 映射方法是sa开头的所有方法 如 ...

  5. Spring Boot Actuator 使用介绍

    Spring Boot Actuator 使用介绍 初识 Actuator 原生端点 应用配置类 度量指标类 操作控制类 近期在看<Spring Cloud 微服务实战>,由于时间过去几年 ...

  6. Spring中的IOC介绍

    Spring中的IOC介绍 IOC(控制反转) IOC介绍 IOC是什么 IOC能做什么 Spring容器管理对象 1.maven管理依赖 2.给定容器的配置文件 3.IOC容器管理对象 4.通过容器 ...

  7. Spring Boot 的发展史介绍

    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 ...

  8. 我的Java Web之路 - Spring(1)- 介绍

    文章目录 介绍 建模 生产.装配/组装的思想 再谈容器 Spring工作模式 Spring的好处 总结 介绍 Spring在目前Java和Java Web开发里面简直就是神一样的存在,就是无处不在.这 ...

  9. Spring框架基础概念(面试概念解答)

    Spring框架概述 什么是Spring? 三层体系架构 Spring框架的优点 Spring的体系结构 Core Container(核心容器) Data Access/Integration(数据 ...

最新文章

  1. 编写一个最简单的.php,学习猿地- 说明 如果我们要编写一个简单的PHP脚本,需要学习哪些...
  2. Elasticsearch5.3.1+Kibana5.3.1从单机到分布式的安装与使用1
  3. sql server 对特殊字符的提取表达式
  4. modbus软件开发实战指南_C++核心准则?GSL:指南支持库
  5. 懒加载 jquery代码
  6. ASP.NET Core Razor生成Html静态文件
  7. c语言学习-输入三个数求三个数中的最大数
  8. Lego-美团点评接口自动化测试实践
  9. C++中对sprintf()
  10. Java使用poi导出Excel之格式设置
  11. php 生成会员卡号,PHP编程:PHP实现生成唯一会员卡号
  12. vue项目调用企业微信扫码权限skd,js-sdk
  13. TILERA--Makefile实例
  14. 【机器学习与算法】python手写算法:Kmeans和Kmeans++算法
  15. 小程序更换云服务器和域名完全攻略
  16. 最实用大数据可视化分析工具
  17. PyQt5适配高分屏的方法
  18. React Hook之Effect Hook
  19. oracle官方网址
  20. 隐藏攻击面,提升信息安全防范能力

热门文章

  1. SAP中的邮件发送功能
  2. ABAP:ALV中自定义搜索帮助
  3. 元宇宙这把火开始烧向打工人
  4. springboot 替换tomcat_Spring Boot实战 之 解剖HelloWorld原型应用
  5. salt return mysql_mysql中储存salt返回结果
  6. 如何利用python3创建数据表_python3创建表及表数据;
  7. java 软引用_Java中弱引用和软引用的区别以及虚引用和强引用介绍
  8. java map类型转换_Java string类型转换成map代码实例
  9. Python中map和reduce函数?
  10. Python3 列表list合并的4种方法