Spring 核心

   
 

Spring的主要特性仅仅是
依赖注入DI和面向切面编程AOP

   
 

JavaBean 1996.12 Javav 规范针对Java定义了软件组件模型,是简单的Java对象不仅可以重用,而且可以轻松的构建更复杂的应用。没有提供诸如事务支持、安全、分布式计算等服务。

   
 

BJB 1998.3 提供了必须的企业级服务,但是不再简单,

声明式编程简化开发

部署描述符和配套代码实现异常复杂。

Java 组件开发, AOP 和DI 为POJO提供了类似EJB的声明式编程模型

Spring框架成为基于POJO的轻量级开发框架的领导者。

   
 

根本使命:简化Java开发

为了减低复杂性,Spring采取了以下4种关键策略

1、基于POJO的轻量级和最小侵入式编程;

2、通过依赖注入和面向接口实现松耦合;

3、基于切面和惯例进行声明式编程;

4、通过切面和模板减少样板式代码。

   
 

EJB 的sessionBean 接口强迫你参与EJB声明周期,强制编写大量的冗余代码、应用于框架绑定,并且通常难以编写测试代码。

   
 

基于Spring构建的应用中,它的类通常没有任何痕迹辨明你使用了Spring。最坏的场景是,一个类或许会使用Spring的注解,但她依旧是POJO 。

   
 

Spring代码:

   
 

依赖注入:
已经演变成一项复杂编程技巧或设计模式。

   
 

任何一个有实际意义的应用都是有两个或者更多的类组成,这些类相互之间进行写作来完成特定的业务逻辑。通常,每个对象足额管理与自己相互写作的对象的引用,这将会导致高低耦合和难以测试的代码。

'耦合的两面性:一方面,难以测试,难以复用,难以理解,另一方面,必须的,
不同类必须以适当的方式进行交互。

通过依赖注入,
对象的依赖关系酱油负责协调系统中各个对象的第三方组件子创建对象时设定,对象无需自行创建或管理他们的依赖关系——依赖关系将被自动注入到需要他们的对象中去。

   
 

依赖注入的方式之一"构造器注入"。

   
 

   
 

使用xml文件注入

   
 

工作方式,SPring上下文装载Bean的定义,并组装bean,Spring应用上下文圈圈负责对象的创建和组装。

   
 

几种不同的应用上下文实现,主要区别在于如何加载他们的配置

   
 

   
 

面向切面编程:AOP

依赖注入让相互
协作的软件松散耦合,二AOP编程允许你把便利各处的功能分离出来形成可重用的组件。

AOP 旺旺被定义为促使应用程序分离关注点的一项技术。

横切关注点:核心功能之外的,注入日志、事务管理和安全此类的系统服务。

   
 

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:44

   
 

AO平时服务模块化,并以声明方式将他们应用到他们需要影响的组件中去。

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:45

   
 

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:46

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:47

   
 

消除模板样式代码;

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:47

   
 

生命周期:

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:48

   
 

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:48

   
 

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:49

   
 

   
 

   
 

屏幕剪辑的捕获时间: 2015-10-9 9:49

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

   
 

    

Spring in Action 学习笔记一的更多相关文章

  1. spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。

    在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的 ...

  2. spring in action 学习笔记十四:用纯注解的方式实现spring mvc

    在讲用纯注解的方式实现springmvc之前先介绍一个类:AbstractAnnotationDispatcherServletInitializer.这个类的作用是:任何一个类继承AbstractA ...

  3. spring in action学习笔记一:DI(Dependency Injection)依赖注入之CI(Constructor Injection)构造器注入

    一:这里先说一下DI(Dependency Injection)依赖注入有种表现形式:一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) ...

  4. Spring in Action 学习笔记三-AOP

    面向切面的Spring 2015年10月9日 11:30             屏幕剪辑的捕获时间: 2015-10-9 14:30             屏幕剪辑的捕获时间: 2015-10-9 ...

  5. Spring in Action 学习笔记二-DI

    装配bean 2015年10月9日 9:49             Sprng中,对象无需自己负责查找或创建其关联的其他对象.相关,容器负责吧需要相互协作的对象引用赋予各个对象. 创建应用对象之间协 ...

  6. spring in action学习笔记十六:配置数据源的几种方式

    第一种方式:JNDI的方式. 用xml配置的方式的代码如下: 1 <jee:jndi-lookup jndi-name="/jdbc/spittrDS" resource-r ...

  7. spring in action 学习笔记九:如何证明在scope为prototype时每次创建的对象不同。

    spring 中scope的值有四个:分别是:singleton.prototype.session.request.其中session和request是在web应用中的. 下面证明当scope为pr ...

  8. spring in action学习笔记七:@Conditional注解的用法

    @Profile注解是@Conditional注解的一个例子.即@Profile也是用@Conditional注解来实现的. 必须让条件实现Condition这个接口. 下面的案例讲如果环境中有mag ...

  9. spring in action 学习笔记五:@Autowired这个注解如何理解

    @Autowired这个注解的意思就是自动装配.他把一个bean对象自动装配到另一个对象中.下面的案例证明了spring的自动装配. 定义一个Sixi类.代码如下: package com.qls.a ...

随机推荐

  1. Fresnel Reflection - 菲涅尔反射

    [Fresnel Reflection - 菲涅尔反射] “菲涅尔”是一个人的名字,因为他发现了一个有关反射的光学现象,这个现象就用这个人的名字命名了.那么,是什么现象呢? 这就是反射/折射与视点角度 ...

  2. css 垂直水平居中总结

    一.前言: 垂直居中有很多方式,我们要做的不是写出完美代码,而是在合适的情况下根据需求选择合适方式. 主要方式: line-height 绝对定位 表格 display:table-cell 主要需求 ...

  3. 在 Linux 打造属于自己的 Vim

    Linux 系统中很多东西都是以脚本代码.配置文件的形式存在,使用 Linux 系统时,需经常对这些文件进行编辑.很显然,如果没有文本编辑器,江湖之路寸步难行. 我的选择是 Vim.Vim 是 Lin ...

  4. 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)

    本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

  5. 迟来的Json反序列化

    源码发布 搞了一个下午,终于搞定了这个号称中国的github...以后源码直接在这里发布了(github实在用不来,英文实在太烂了) https://code.csdn.net/jy02305022/ ...

  6. LeetCode-1TwoSum(C#)

    # 题目 1. Two Sum Given an array of integers, return indices of the two numbers such that they add up ...

  7. 在面试中忽然发现DateTime的一些...

    今天说说我面试中碰到的一个小问题,在我问起DateTime为什么无法赋值NULL值,一般第一反应都认为它是值类型,不是引用类型,但随后我查阅了度娘自我学习到它是结构类型,那么随之而然就无法赋值NULL ...

  8. 推荐几款jquery图片切换插件

    一.前言 毕业季到了,大家都在匆匆忙忙的记录大学里最美好的时光,照片中各种花式.各种姿势都涌现出来了.这么多的照片怎么展示出来给自己的好友看呢?有人选择做成视频,有人选择ps之后做成图片集,而我选择利 ...

  9. JavaScript -Array.form方法

    Array.from方法可以把一个类数组或者课遍历对象转换为一个正真的数组 语法 Array.from(arrayLike[, mapFn[, thisArg]]) 参数 arrayLike 想要转换 ...

  10. 使用TypeScript拓展你自己的VS Code!

    0x00 前言 在前几天的美国纽约,微软举行了Connect(); //2015大会.通过这次大会,我们可以很高兴的看到微软的确变得更加开放也更加务实了.当然,会上放出了不少新产品和新功能,其中就包括 ...