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. 跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

    运算符 设定:a=10,b=20 . 算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**3 ...

  2. ERROR 1300 (HY000): Invalid utf8 character string: ''

    在load csv 进mysql的时候,报这个错,苦恼了很长时间,网上搜索不到答案. mysql>    load data infile '/home/hdh/8_sr/8_45.csv'   ...

  3. hadoop 2.4 遇到的问题

    不管出什么问题,首先查看日志. 在启动过hadoop的前提下,打开浏览器,输入http://localhost:50070 点击Utilities下的logs,选择hadoop-root-datano ...

  4. 技术笔记:XMPP之openfire+spark+smack

    在即时通信这个领域目前只找到一个XMPP协议,在其协议基础上还是有许多成熟的产品,而且是开源的.所以还是想在这个领域多多了解一下. XMPP协议:具体的概念我就不写了,毕竟这东西网上到处是.简单的说就 ...

  5. 使用Xamarin开发iOS7应用时隐藏StatusBar方法

    在iOS7之前如果需要隐藏StatusBar,比较简单,直接在AppDelegate.cs中使用如下代码就可以进行隐藏: UIApplication.SharedApplication.StatusB ...

  6. 从零开始,DIY一个jQuery(3)

    在前两章,为了方便调试,我们写了一个非常简单的 jQuery.fn.init 方法: jQuery.fn.init = function (selector, context, root) { if ...

  7. Vue.js——vue-router 60分钟快速入门

    概述 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的 ...

  8. 使用xUnit,EF,Effort和ABP进行单元测试(C#)

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 介绍 创建测试项目 准备测试基类 创建第一个测试 测试异常 在测试中使用仓储 测试异步方法 小结 介绍 在这篇博客中,我 ...

  9. Atitit 外包管理规范attilax总结

    Atitit 外包管理规范attilax总结 1. 常见的外包问题2 1.1. 使用了过时的语言与技术2 1.2. 不易扩展的架构,架构落后2 1.3. 使用了小众语言,框架类库,组件等技术,导致维护 ...

  10. 【Win 10 应用开发】共享目标(UWP)

    在开始吹牛之前,先给大伙伴们拜个年,祝各位身体健康.生活愉快.[码]到功成. ------------------------------------------------------------- ...