Spring4总结
1. 明确Spring的主要作用就是为代码“解耦”,降低代码间的耦合度。使用IoC使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了,而是由Spring容器统一管理,自动“注入”;使用AOP使得系统级服务得到了最大的复用,且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由Spring容器统一完成“织入”。
2. 明确IoC(控制反转)是对对象控制权的转移,从程序代码本身反转到了外部容器,由外部容器来实现对象的装配和管理,其不能使用在分布式系统中。即其所依赖的反转到的外部容器,必须要与控制权出让方同处于一个 JVM 中;
IoC是一种思想,比较流行的实现方式有两种:依赖查找和依赖注入,Spring使用的是依赖注入。
3. 明确Bean的装配,创建Bean对象的方式有三种:getBean()方式、动态工厂Bean方式、静态工厂Bean方式。
4. 明确Bean的作用域:singleton、prototype、request、session、global session,了解Bean的生命周期,分为11步,明确其中的Bean后处理器和Bean的定制生命始末。
5. 明确基于XML的依赖注入方式和基于注解的依赖注入方式,重点关注域属性注入的byName和byType。若注解与 XML 同用,XML 的优先级要高于注解。这样做的好处是,需要对某个 Bean做修改,只需修改配置文件即可。当然,此时,Bean 类要有 setXXX() 或构造器。
6. 明确AOP的底层是动态代理(JDK的动态代理或CGLIB动态代理),AOP的知识点有:切面、织入、连接点、切入点、目标对象、通知和顾问;
通知有前置通知、后置通知、环绕通知、异常处理通知,通知只能指定织入的时间点,同时会织入目标类的所有方法;
没主业务接口的时候使用CGLIB动态代理,有主业务接口也可以指定使用CGLIB动态代理(有时候,CGLIB动态代理比JDK的动态代理高效);
顾问对通知进行了包装,既能指定织入的时间点,又能指定织入的位置(具体织入目标类的哪个方法);
代理的生成方式有三种:
1. 由 ProxyFactoryBean 代理工具类生成,一个代理对象只能代理一个Bean,同时在客户端使用的是代理对象的id。
2. 由默认 advisor 自动代理生成器生成,将所有的目标对象与 Advisor 自动结合,生成代理对象。无需给生成器做任何的注入配置。注意,只能与 Advisor 配合使用。
3. 由 Bean 名称自动代理生成器生成,根据 bean 的 id,为符合相应名称的类生成相应代理对象,既能与 Advice ,又能与 Advisor 配合使用。
注意:增强的方法不能是final的。
7. 明确AspectJ对AOP的实现,也分成基于注解的方式和基于XML的方式,其中基于XML的方式是Spring实现AOP的最常用方法,注意AspectJ有六种通知,多了最终通知和引用通知。
8. 了解Spring的JDBC模板是Ioc应用的示例,将数据源 DataSource 对象和 JDBC 模板对象注入给了 Dao 层的实现类。
9. 明确Spring的事务管理是AOP应用的示例,将事务作为切面织入到了 Service 层的业务方法中,从而将事务特性从数据库层提升到Service层,从而使同事务的特性来管理具体的业务;
在 Spring 中通常可以通过以下三种方式来实现对事务的管理:
1.使用 Spring 的事务代理工厂管理事务
2.使用 Spring 的事务注解管理事务
3.使用 AspectJ 的 AOP 配置管理事务 (最常用)
注意:事务定义接口定义了事务描述相关的三类常量:事务隔离级别、事务传播行为、事务默认超时时限,及对它们的操作;
Spring 事务的默认回滚方式是:发生运行时异常时回滚,发生受查异常时提交。不过,对于受查异常,程序员也可以手工设置其回滚方式。
10. SSH整合开发
Spring4总结的更多相关文章
- SSM整合(三):Spring4与Mybatis3与SpringMVC整合
源码下载 SSMDemo 上一节整合了Mybatis3与Spring4,接下来整合SpringMVC! 说明:整合SpringMVC必须是在web项目中,所以前期,新建的就是web项目! 本节全部采用 ...
- SSM整合(二):Spring4与Mybatis3整合
上一节测试好了Mybatis3,接下来整合Spring4! 一.添加spring上下文配置 在src/main/resources/目录下的spring新建spring上下文配置文件applicati ...
- dubbo升级spring4与cxf
阿里的dubbo项目是基于spring2.x的.但之后停止更新了.当当网有根据dubbo扩展成dubbox,基于spring3.x,但我的项目中用的是spring4.x,于是fork了dubbox,自 ...
- jsonp使用,spring4.x对jsonp的支持
1.Java中接口 @RequestMapping("/token/{token}") @ResponseBody public Object getUserByToken(@Pa ...
- (Spring4 json入门)Spring4+SpringMVC+页面数据发送与接收(json格式)
jar包(Maven仓库): Spring4 jar包(Maven仓库): 在测试过程中我查看了网上的一些教程,但是那些教程都是在Spring3环境下的,Spring3和Spring4解析json需要 ...
- [转]Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合
原文地址:http://blog.csdn.net/ycb1689/article/details/22928519 最新版Struts2+Hibernate+Spring整合 目前为止三大框架最新版 ...
- Spring4.0编程式定时任务配置
看过很多定时调度的配置,大多使用XML配置,觉得比较麻烦,也比较老套.这里介绍一种基于spring4.0注解编程式配置定时任务,简单清晰,使用方便.. 至于引入spring相关jar这里不多说,直接切 ...
- 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台
开发企业级的部标GPS监控平台,投入的开发力量很大,开发周期也很长,选择主流的开发语言以及成熟的开源技术框架来构建基础平台,是最恰当不过的事情,在设计之初就避免掉了技术选型的风险,避免以后在开发过程中 ...
- spring4+websocket+nginx详细配置
实现的版本jdk1.7.0_25, tomcat7.0.47.0, Tengine/2.1.1 (nginx/1.6.2), servlet3.0, spring4.2.2 使用maven导入版本3. ...
- Spring4.1新特性——Spring缓存框架增强(转)
目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...
随机推荐
- [2017BUAA软工助教]剩余个人作业与deadline
软件工程剩余作业与deadline 标签(空格分隔): 软件工程 一.个人阅读作业+总结 对软件工程的学习做一个总结. 阅读下列关于软件开发本质和开发方法的博客/文章,结合自己在个人项目/结对编程/团 ...
- 实训一(cocos2d-x相关)
实训内容简介: 大四开始前系里安排的的集中实践环节,根据要求,开发app应用软件. 目标app:Stick_mxj 目的:继续对cocos2d-x的学习,完成实践环节,解决现在对引擎不是很清楚的一些问 ...
- 使用Visual Studio 2013进行单元测试
使用Visual Studio 2013进行单元测试 1.打开VS2013 --> 新建一个项目.这里我们默认创建一个控制台项目.取名为UnitTestDemo 2.在解决方案里面新增一个单元测 ...
- 团队作业四-WBS练习
我们团队开发的是四则运算,主要面对的用户是小学生.老师及学生家长.经过我们组成员的讨论和结合实际及自身能力,对团队成员分配任务,队长负责全局工作主要负责任务,统一进度,和适量的编码,露哥和阮磊主要负责 ...
- PAT 甲级 1105 Spiral Matrix
https://pintia.cn/problem-sets/994805342720868352/problems/994805363117768704 This time your job is ...
- 使用Webdriver刷博客文章评论
package com.zhc.webdriver; import java.util.ArrayList; import java.util.Iterator; import java.util.c ...
- javascript extend
interface Date{ addHours(h:number); addMinutes(m:number); format(str):string } interface String{ tri ...
- IntelliJ IDEA之如何提交代码到SVN服务器
一.准备 参照<IntelliJ IDEA教程之如何配置SVN>这篇文章配置SVN插件.提交代码到SVN之前,记得要先创建版本库,请参照<<SVN如何建立版本库>> ...
- 【设计模式】—— 装饰模式Decorator
前言:[模式总览]——————————by xingoo 模式意图 在不改变原来类的情况下,进行扩展. 动态的给对象增加一个业务功能,就功能来说,比生成子类更方便. 应用场景 1 在不生成子类的情况下 ...
- 【题解】 bzoj1911: [Apio2010]特别行动队 (动态规划+斜率优化)
bzoj1911,懒得复制,戳我戳我 Solution: 线性DP(打牌) \(dp\)方程还是很好想的:\(dp[i]=dp[j-1]+a*(s[i]-s[j-1])^2+b*(s[i]-s[j-1 ...