本文借鉴:Spring学习(特此感谢!)

一、简介

什么是Spring

定义:Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,目的为了简化java开发。

DI:注入

IOC:控制反转

AOP:面向切面编程

原理:利用了java的反射机制

常用术语

框架

定义:项目的整体架构模型,可以协助我们更快更方便地进行开发。

非侵入式设计

定义:从框架的角度看即无需继承框架提供的任何类,当更换框架时,大部分的功能代码无需改变。

轻量级和重量级

轻量级:非入侵性的、所依赖的东西非常少、资源占用非常少、部署简单等等特点。

重量级:与轻量级相反,一般迁移、更换起来会比较麻烦。

JavaBean

  定义:一种java类,一个可重复使用的软件组件,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。 类中定义了具体的属性,并通过get、set方法暴露出去给其他类调用。(可以简单理解为数据传输模型的载体

POJO

  定义:简单的Java对象,具有getter/setter方法,常见的VO(value -object)和DTO(Data Transform Object)就是一种POJO,不允许有业务方法,也不能携带有connection之类的方法。(即不包含业务逻辑或持久逻辑等。)

特点:

这个类必须有一个公共的缺省构造函数

这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。

这个类应是可序列化的

容器

定义:从程序设计角度看就是装对象的的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期

Spring优势

低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)

声明式事务管理(基于切面和惯例)

方便集成其他框架(如MyBatis、Hibernate)

降低 Java 开发难度

Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)

Spring的功能

① Spring 能帮我们根据配置文件创建及组装对象之间的依赖关系。

② Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。

③ Spring 能非常简单的帮我们管理数据库事务。

④ Spring 还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。

⑤ Spring 还提供与第三方Web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。

⑥ Spring 能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。

Spring框架

Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。

Web层包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。

AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。

Core Container(核心容器):包含有Beans、Core、Context和SpEL模块。

Test模块支持使用JUnit和TestNG对Spring组件进行测试。

Spring容器中Bean的生命周期

简单文字归纳一下:

1-2  创建实例

  现在假设spring就是个容器,而配置文件中配置的bean属性才是我们真正需要的东西。创建实例就是说,我把配置文件中的bean信息取出来化作一个真正的bean并放到容器中。

3-4  注入依赖关系

  第3步是创建实例之后对实例作了一些处理,第4步是把xml中配置的bean属性值赋予给容器中的实例化之后的bean。

5  bean初始化之前的处理

  应用开发者需要把容器中实例化的bean拿出来用,这个拿出来的过程就是初始化,第五步就是在初始化之前,对已经实例化的bean再作一定的处理。

6-7  初始化

  如果bean实现了InitializingBean,那么将调用InitializingBean的afterPropertiesSet()方法做一些初始化处理。如果没有实现InitializingBean,而是在配置文件中定义了init-method属性值,那么系统会找到init-method对应的方法并执行之,程序猿哥哥一般在这个方法里写一些初始化操作;

8  bean初始化之后的处理

  初始化之后在这个方法中再对bean进行修饰装点。

9-10  交给应用开发人员处理

  如果在<bean>中指定Bean的作用范围是scopt="prototype",那么系统将bean返回给调用者,spring就不管了(如果两个实例调用的话,每一次调用都要重新初始化,一个实例的修改不会影响另一个实例的值。如果指定Bean的作用范围是scope="singleton",则把bean放到缓冲池中,并将bean的引用返回给调用者。这个时候,如果两个实例调用的话,因为它们用的是同一个引用,任何一方的修改都会影响到另一方。)

11  bean用完之后

  对于scope="singleton"的bean,使用完之后spring容器会做一些处理,比如编写释放资源、记录日志等操作。

12  销毁

  调用配置文件中的销毁方法销毁实例。

转载于:https://www.cnblogs.com/riches/p/11488548.html

Spring学习(一)初识Spring相关推荐

  1. Spring学习-初识Spring

    这几天一直在看Spring.虽然已经看到了第3章,但是感觉没多大收获,所以我又回过头,再温习一下. Spring是什么? Spring是一个开源框架,最早由Rod Johnson创建,Spring是为 ...

  2. Spring学习笔记 之 Spring<全>

    开始学习Spring全家桶 文章目录 1. IoC 定义 为什么叫控制反转? 实现 IoC 容器创建 bean 的两种⽅式 IoC DI 特殊字符的处理 Spring 中的bean创建类型 -- sc ...

  3. spring学习笔记(spring概述和IOC)

    spring5 1.spring的概述 1.1.spring是什么 Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,它是为了解决企业应用开发的复杂性而创建的. Spring 的 ...

  4. [spring学习] 1、spring下载与使用

    目录 spring介绍 spring核心部分 spring的下载 idea使用spring 总结 spring介绍 Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Jo ...

  5. Spring 学习之 二----Spring创建对象的三种方式

    最近在系统的学习Spring,现在就Spring的一些知识进行总结. 我们知道Spring是一个开放源代码的设计层面的框架,他主要解决的是业务逻辑层与其他各层之间松耦合的问题. Spring 有三个核 ...

  6. Spring学习9-MyEclipse中Spring工程使用@Resource注释的问题

    在MyEclipse 的Spring工程中,有时候要使用@Resource注释来驱动Spring配置.但是在MyEclipse添加Spring开发能力的操作中,并没有 把相关的库添加到工程的class ...

  7. Spring学习笔记之Spring Web Flow

    Spring Web Flow 是Spring MVC 的扩展,它支持开发基于流程的应用程序.它将流程的定义与实现流程行为的类和视图分离开来. 1.配置Web Flow 在Spring MVC上下文定 ...

  8. MyEclipse Spring 学习总结一 Spring IOC容器

    一.Spring IOC容器---- Spring AllicationContext容器 程序的结构如下: 1.首先在MyEclipse 创建创建Java Project 2.创建好后,添加spin ...

  9. Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)

    http://blog.csdn.net/qq598535550/article/details/51703190 二.Spring整合mybatis其实是在mybatis的基础上实现Spring框架 ...

  10. 【Spring学习】使用Spring的jdbcTemplate简化JDBC操作

    applicationContext.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <bea ...

最新文章

  1. 《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用
  2. tensorflow入门教程和底层机制简单解说——本质就是图计算,自动寻找依赖,想想spark机制就明白了...
  3. Effective Java之for-each循环优先于for循环(四十六)
  4. Python3之对象垃圾收集机制浅析
  5. 容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额
  6. entity framework 调用 oracle 序列_Weblogic T3 反序列化漏洞(CVE20192890 )分析
  7. 微信小程序云开发教程-WXML入门-常用组件和属性
  8. 计算机软件C盘移到D盘怎么移,c盘的软件怎样转到d盘_如何将软件从c盘移出转到d盘-win7之家...
  9. 《中国电子报》访极通研发总监梁绍博
  10. app图标圆角角度_iOS app 图标的圆角半径是多少?
  11. c c++ 实现代理服务器
  12. Excel中28个基本图
  13. windows10---Excel2016基本操作技巧
  14. Excel换行显示的几种方法,你知道吗?
  15. 计算机学院机考,东华大学计算机学院研究生复试上机考真题.doc
  16. 电信物联网平台SOTA升级(软件升级)的全流程说明
  17. 一起学习华为自研数据库GaussDB(DWS)【这次高斯不是数学家】
  18. gearman和python客户端的安装和使用
  19. 仪控功能测试仿真设备ETest
  20. mooc《工程流体力学》笔记

热门文章

  1. 企业进销存管理系统 email_进销存财务软件选它就对了!
  2. python 泛型_Python插件 - 如何创建C#泛型List
  3. pythonssl双向认证_Python 上的 ssl 提示验证失败,有什么办法深究具体失败的原因么?...
  4. python cms tornado_都2020年了,python的tornado框架还有用武之力么?
  5. 每天一道LeetCode-----比较两个字符串,每个字符串被若干'.'分成多个数字,一个个比较
  6. 1028 人口普查 (20 分)(c语言)
  7. 记录kafka-flink bug
  8. Mysql(13)——left join和right join的用法
  9. 我想做一个课程表系统利用PHP+MYSQL+HTML实现课表的展示,但是不知道如何实现
  10. 计算机网络(第七版)谢希仁编著 第一章习题详解1-28