spring 干嘛用的,记录。以后用多了再补充
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
- ApplicationContext context = new FileSystemXmlApplicationContext(
- "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 干嘛用的,记录。以后用多了再补充的更多相关文章
- 【ActiveMQ】Spring Jms集成ActiveMQ学习记录
Spring Jms集成ActiveMQ学习记录. 引入依赖包 无论生产者还是消费者均引入这些包: <properties> <spring.version>3.0.5.REL ...
- spring boot +dubbo 踩坑记录
今天初次搭建spring boot +duboo的demo.记录一下踩坑记录. 首先搭建3个小demo,一个maven项目,两个spring boot (服务提供者和服务消费者)项目. 两 sprin ...
- Spring AOP实例——异常处理和记录程序执行时间
实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动 ...
- spring boot oauth2的一些记录
oauth2及时从一个项目A申请另一个项目B的访问的时候,不用在项目A输入项目B的用户名和密码,个人理解先跳转到项目B,利用项目B的用户名和密码得到一个code之类的,这里有点像openID,不过不是 ...
- 谈下spring下的 aop日志记录
在我们开发当中 我们需要对系统用户行为和 系统异常信息有个统一记录 以便后期的 用户行为分析和bug修复 当我们有这个需求时 我们的通常采取方式很多 1.比如我们定义一个规范 开发一个接口 ...
- 剑指架构师系列-spring boot的logback日志记录
Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...
- spring cloud 实践坑点记录
用spring cloud 微服务框架有一段时间了有一些坑点在这里给大家记录一下希望大家用得着 1.当我们使用聚合性能监控的时候,我们采用 rabbitmq作为消息中间件来收集性能信息最后在使用Tur ...
- Spring aop+自定义注解统一记录用户行为日志
写在前面 本文不涉及过多的Spring aop基本概念以及基本用法介绍,以实际场景使用为主. 场景 我们通常有这样一个需求:打印后台接口请求的具体参数,打印接口请求的最终响应结果,以及记录哪个用户在什 ...
- Spring data jpa 使用技巧记录
软件152 尹以操 最近在用Springboot 以及Spring data jpa ,使用jpa可以让我更方便的操作数据库,特开此帖记录使用jpa的一些小技巧. 一.使用spring data j ...
随机推荐
- 【Excel 4.0 函数】REGISTER 的两种形式以及VBA等效语句
形式1 REGISTER("SAMPLE.DLL", "MyFunction", "AIC") 形式1等效 VBA语句 Declare Fu ...
- php数据访问基础
建一个连接(造一个连接对象) $db = new MySqli("IP地址或者域名,若果是本地则用localhost","用户名","数据库密码&qu ...
- Oracle、SQL Server、MySQL分页方法
测试用例:查询TEST_TABLE表中TEST_COLUMN列的第10-20条数据 1,Oracle分页方法 SELECT A.* FROM ( SELECT ROWNUM ROWNO, B.* FR ...
- Python简易聊天工具-基于异步Socket通信
继续学习Python中,最近看书<Python基础教程>中的虚拟茶话会项目,觉得很有意思,自己敲了一遍,受益匪浅,同时记录一下. 主要用到异步socket服务客户端和服务器模块asynco ...
- MD(markdown)语法
#标题1 ##标题2 段落->空行分隔 `加背景` [超链接](https://www.baidu.com) **加粗** _斜体_ ~~删除线~~ . 列表一 . 列表二 图片: ![alt ...
- Mysql游标
14.6.6.1 Cursor CLOSE Syntax 14.6.6.2 Cursor DECLARE Syntax 14.6.6.3 Cursor FETCH Syntax 14.6.6.4 Cu ...
- 使用vsphere client 克隆虚拟机
免费的VMWare ESXi5.0非常强大,于是在vSphere5.0平台中ESXi取代了ESX.,使用ESXi经常会遇到这样的问题,我需要建立多个虚拟机,都是windows2003操作系统,难道必须 ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 解决Fragment在Viepager中切换不保存状态的问题
在FragmentPagerAdapter中重写以下方法: @Override public Object instantiateItem(ViewGroup container, int posit ...
- c++ 头文件包含问题-include&class
http://blog.csdn.net/jiajia4336/article/details/8996254 前向声明概念(forward declaration) 在程序中引入了类类型的B.在声明 ...