http://zhidao.baidu.com/link?url=TVePPDbQU1n61s_Bu2FT9_YoJebaux8tYlNEZQhiHYHpT8QIbbyOSC8wDnpVmnmurwNntgNpRqwFkMcu8U9K8K

其实我一开始也好楼主有同样的困惑,但是在项目的慢慢积累,感觉spring的配置文件太有才了

我就和你分享一点:那就是软件的后期维护

比如说有一个订单的DAO接口:interface OrderDAO

在开发的时候我是用的MySql数据库,实现类为  class MySqlOrderDAOImpl implements OrderDAO

在业务代码里面,我要使用OrderDAO,这没什么难的,直接new一个对象不就行了吗,于是我就这样了:

OrderDAO dao = new MySqlOrderDAOImpl();

轻松完成,最后项目完成,实施运营了,后来客户发现MySql不行了,要换成Oracle,这不难,我在写一个OrderDAO的实现类不就行了吗,于是我两指一挥:

class OracleOrderDAOImpl implements OrderDAO

可是这样就又来了一个麻烦就是在我的业务代码里面,我都是自己new的对象,都是“MySqlOrderDAOImpl”,

没问题,把 “MySqlOrderDAOImpl” 替换成”OracleOrderDAOImpl “就可以了

于是,全体动员,查找“MySqlOrderDAOImpl”然后替换成”OracleOrderDAOImpl “,这样浪费了半天,还可能有些地方还没替换呢

=============================================

后来就想到了spring的Ioc,在配置文件里配置OrderDAO的实现类就可以了,只要OrderDAO的有新的实现类,我只是在配置文件中修改一下就可以了,大概需要几秒钟吧,时间太快,没法计算啊(呵呵)

不带Ioc :http://blog.csdn.net/tydldd1/article/details/8107786
Aop:http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html
http://outofmemory.cn/code-snippet/3762/Spring-AOP-learn-example 我理解的ioc 控制反转,所谓的控制翻转就是在配置文件中配置一些信息,要用的地方通过读取配置文件反射出要用的实体,这个实体有一个基类或者接口,将反射的实体赋值给
基类或者接口,调用基类或者接口的方法,会调用重写或者实现的接口方法,这样的话A,B实体都实现了接口I,只需要在配置文件中修改时用A还是B,在调用的地方都是用I来操作,也就不需要知道到底是A在用还是B在调用。
控制翻转的实现原理见http://blog.csdn.net/it_man/article/details/4402245
  1. ApplicationContext context = new FileSystemXmlApplicationContext(
  2. "applicationContext.xml");

下面简单叙述一下ioc到底做了什么。

<bean id="test" class="Test">
<property name="testMap">
<map>
<entry key="a">
<value></value>
</entry>
<entry key="b">
<value></value>
</entry>
</map>
</property>
</bean>

首先会解析配置文件,

将我们配置的信息保存在一个HashMap中,HashMap的key就是Bean 的 Id ,HasMap 的value是这个Bean,只有这样我们才能通过context.getBean("animal")这个方法获得Animal这个类。

它是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。

最后它将这个类的实例返回给我们,我们就可以用了

IoC就是对象的创建,依赖都由Spring及配置文件控制
AOP就是统一的给一些类似的方法加上同样的功能,比如日志,事务

spring 干嘛用的,记录。以后用多了再补充的更多相关文章

  1. 【ActiveMQ】Spring Jms集成ActiveMQ学习记录

    Spring Jms集成ActiveMQ学习记录. 引入依赖包 无论生产者还是消费者均引入这些包: <properties> <spring.version>3.0.5.REL ...

  2. spring boot +dubbo 踩坑记录

    今天初次搭建spring boot +duboo的demo.记录一下踩坑记录. 首先搭建3个小demo,一个maven项目,两个spring boot (服务提供者和服务消费者)项目. 两 sprin ...

  3. Spring AOP实例——异常处理和记录程序执行时间

    实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动 ...

  4. spring boot oauth2的一些记录

    oauth2及时从一个项目A申请另一个项目B的访问的时候,不用在项目A输入项目B的用户名和密码,个人理解先跳转到项目B,利用项目B的用户名和密码得到一个code之类的,这里有点像openID,不过不是 ...

  5. 谈下spring下的 aop日志记录

    在我们开发当中  我们需要对系统用户行为和 系统异常信息有个统一记录  以便后期的 用户行为分析和bug修复   当我们有这个需求时  我们的通常采取方式很多 1.比如我们定义一个规范 开发一个接口 ...

  6. 剑指架构师系列-spring boot的logback日志记录

    Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...

  7. spring cloud 实践坑点记录

    用spring cloud 微服务框架有一段时间了有一些坑点在这里给大家记录一下希望大家用得着 1.当我们使用聚合性能监控的时候,我们采用 rabbitmq作为消息中间件来收集性能信息最后在使用Tur ...

  8. Spring aop+自定义注解统一记录用户行为日志

    写在前面 本文不涉及过多的Spring aop基本概念以及基本用法介绍,以实际场景使用为主. 场景 我们通常有这样一个需求:打印后台接口请求的具体参数,打印接口请求的最终响应结果,以及记录哪个用户在什 ...

  9. Spring data jpa 使用技巧记录

    软件152 尹以操 最近在用Springboot 以及Spring data jpa  ,使用jpa可以让我更方便的操作数据库,特开此帖记录使用jpa的一些小技巧. 一.使用spring data j ...

随机推荐

  1. 使用WKWebView替换UIWebView

    开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载.这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难.如果加载网页多,还可能因为过量占 ...

  2. IOS开发中与设计沟通之字体大小转换

    px:相对长度单位.像素(Pixel).pt:绝对长度单位.点(Point).1in = 2.54cm = 25.4 mm = 72pt = 6pc 具体换算是: Points Pixels Ems ...

  3. php正则表达式、数组

    <?php $s = "he8llo5wor6ld"; $s = preg_replace("/\d/","#",$s);按照正则表达 ...

  4. android 开发赚钱

    原 android 开发赚钱 谁带我去看看世界 发布时间: 2015/06/09 12:05 阅读: 1589 收藏: 37 点赞: 2 评论: 5 开发android也有一年左右了,利用业余时间陆续 ...

  5. Jquery学习笔记---闭包

    1. 简要介绍 闭包可谓是js中的一大特色了,即使你对闭包没概念,你可能已经在不知不觉中使用到了闭包.闭包是什么,闭包就是一个函数可以访问到另一个函数的变量.这就是闭包,解释起来就这么一句话,不明白? ...

  6. AIX性能监控

    http://www.ibm.com/developerworks/cn/aix/library/au-aix7memoryoptimize2/ http://www.aixchina.net/Art ...

  7. JustSniffer

    http://blog.csdn.net/cnbird2008/article/details/5875781

  8. 【JAVA 其它流对象】

    一.PrintStream类. 该流是字节流. public class PrintStream extends FilterOutputStream implements Appendable, C ...

  9. 2014百度之星资格赛 1001:Energy Conversion(水题,逻辑题)

    Energy Conversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  10. 玩玩Excel下的Power View

    作为微软平台下的数据展示工具,Power View是一个不错的选择.而在Excel 2013下,即使你没有SharePoint的实例那么你也可以玩转它.此篇讲对Excel 2013下的Power Vi ...