Spring in Action 学习笔记一
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 学习笔记一的更多相关文章
- spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。
在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的 ...
- spring in action 学习笔记十四:用纯注解的方式实现spring mvc
在讲用纯注解的方式实现springmvc之前先介绍一个类:AbstractAnnotationDispatcherServletInitializer.这个类的作用是:任何一个类继承AbstractA ...
- spring in action学习笔记一:DI(Dependency Injection)依赖注入之CI(Constructor Injection)构造器注入
一:这里先说一下DI(Dependency Injection)依赖注入有种表现形式:一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) ...
- Spring in Action 学习笔记三-AOP
面向切面的Spring 2015年10月9日 11:30 屏幕剪辑的捕获时间: 2015-10-9 14:30 屏幕剪辑的捕获时间: 2015-10-9 ...
- Spring in Action 学习笔记二-DI
装配bean 2015年10月9日 9:49 Sprng中,对象无需自己负责查找或创建其关联的其他对象.相关,容器负责吧需要相互协作的对象引用赋予各个对象. 创建应用对象之间协 ...
- spring in action学习笔记十六:配置数据源的几种方式
第一种方式:JNDI的方式. 用xml配置的方式的代码如下: 1 <jee:jndi-lookup jndi-name="/jdbc/spittrDS" resource-r ...
- spring in action 学习笔记九:如何证明在scope为prototype时每次创建的对象不同。
spring 中scope的值有四个:分别是:singleton.prototype.session.request.其中session和request是在web应用中的. 下面证明当scope为pr ...
- spring in action学习笔记七:@Conditional注解的用法
@Profile注解是@Conditional注解的一个例子.即@Profile也是用@Conditional注解来实现的. 必须让条件实现Condition这个接口. 下面的案例讲如果环境中有mag ...
- spring in action 学习笔记五:@Autowired这个注解如何理解
@Autowired这个注解的意思就是自动装配.他把一个bean对象自动装配到另一个对象中.下面的案例证明了spring的自动装配. 定义一个Sixi类.代码如下: package com.qls.a ...
随机推荐
- Linux常用命令
命令格式与目录处理命令 ls 命令格式与目录处理命令 ls 命令格式:命令 [-选项][参数] 例:ls -la /etc 说明: 1)个别命令使用不遵循格式 2)当有多个选项时,可以写在一起 3)简 ...
- 浅谈iptables 入站 出站以及NAT实例
--------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!--------------- iptbales默认ACCEPT策略,也称通策略,这种情况下可以做 ...
- 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率
原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...
- 闭区间套定理(Nested intervals theorem)
① ②这里用到了极限与不等关系 ③如果a≠b,那么便不会有$\lim _{n\rightarrow \infty }\left| I_n \right| =0$ ④如果还存在一点c在内,那么同样也不会 ...
- VS2013中的MVC5模板部署到mono上的艰辛历程
部署环境:CentOS7 + Mono 3.10 + Jexus 5.6 在Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题:但在VS2013中创建的asp.n ...
- DBCP 配置备注
<property name="initialSize" value="5"></property> <property name ...
- C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- UIApplication和OpenUrl的基于使用方法
UIApplication实用方法 前言: 本文介绍的方法每一个人在项目都应用过,只是有的时候容易忘记每次都要去百度.因为有些方法在整个项目中可能就只会写一次,基于此我只是做个笔记. 1. 每一个应用 ...
- Java–cvc-complex-type.4:Attribut ‘version’ must appear on element ‘web-app’
问题解析: 在web.xml中的以下代码中 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi=" ...
- CodeSmith模板代码生成实战详解
前言 公司项目是基于soa面向服务的架构思想开发的,项目分解众多子项目是必然的.然而子项目的架子结构种类也过多的话,就会对后期的开发维护产生一锅粥的感觉.为了尽可能的在结构层避免出现这种混乱的现象,我 ...