我们学习Spring之前需要对23种java的设计模式的9种有一定的理解,设计模式为了解耦,Spring也是在解耦的方向上设计的,所以设计模式要理解一下,它当中用到了很多。

  • 单例模式(写法很多钟,7种中知道常用的两种左右就可以了)
  • 工厂模式(简单工厂,工厂方法,抽象工厂)
  • 代理模式(jdk的动态代理,CGLIB的代理)
  • 委派模式(跟代理模式类似,区别是这个只看到结果出来)
  • 原型模式(一个克隆对象的方法,只克隆数据类型属性叫浅拷贝,克隆对象信息的叫深拷贝)
  • 门面模式(一个大堂经理的职位,做事的不是他,他是将不同的情况的业务分到对应的业务窗口去执行,目的是扩展)
  • 策略模式(用不同的方式去实现,但是不影响最终的结果,比如CompareTo的这个方法的比较,小的数据返-1,相等返0,大于返1,至于怎么比较的我们不知道)

  设计模式按照理解的写了7个放在github上了,    地址:https://github.com/zy93xy/PatterDesignWorkspace

  面试官有时候会问你:“讲讲你所理解的IOC”,这时你如果按照千篇一律的方式去回答:“它是将对象的创建的控制权交给了我们的Spring的Ioc容器”,肯定没错,但是这只是一种云云亦云的说法,面试官都听起茧了,所以我们要从3个方面去说明清楚它。

  背景:在没有Spring的管理时,我们要写服务层的调用时,就是new一个的方式,都是接口的引用去new响应的接口实现的服务的,所以我们常规的这样在管理这样的大量的类的实例时会有很多资源浪费,同时让我们写了很多耦合度比较高的代码,实现的服务的接口一旦达到上百的个,请问你又怎么能记得住呢。这时,Spring的IOC容器就出来解决了耦合性开发的问题,向BeanFactory拿到Bean的实例,当中的处理方式就不用知道怎么会是,我们只管拿到使用就可以了,解放了业务开发的代码量,做了一次优秀的封装。

  引入:我们可以把Spring的编程的核心叫做BOP(面向bean的编程思想)编程,创建对象(bean)和依赖调用的原本是需要在调用类里实现的,控制反转把所有的这种反复的事交给了Ioc容器来做,而且还是必须容器才行。容器在这里做什么?起了一个什么样的作用呢?

  Ioc:从我们代码上可以有三种方式进行注入:①set方式,②直接赋值,③构造注入;在注入前我们需要对该bean组件进行获取bean,而getBean()方法又是BeanFacotry定义的规范,接着BeanDefinition进行还原处理,定位到实例bean,加载,初始化,注册,注入完成控制反转和依赖注入的。当下代码是启动Spring中的Ioc获取了bean的实例的开始

    ApplicationContext appContext =   new ClassPathXmlApplicationContext("classpath:META-INF/spring/applicationContext-common.xml");
        ApplicationContext appContext=appContext.getContext();
        ProjectServiceFacade projectServiceFacade=(ProjectServiceFacade)appContext.getBean("projectService");  
//projectServiceFacade使用就可以调用方法了

在Ioc分析二中将了解整个的一个过程。

Spring的IOC分析(一)的更多相关文章

  1. Spring的IOC分析(二)源码

    承接上节继续,分析Ioc的工作原理,在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起(同时一个叫DI"依赖注入"或DL"依赖查找" ...

  2. 最佳新秀SSH(十三)——Spring集装箱IOC分析和简单的实现

    时间最近一段时期,"集装箱"这个词一直萦绕在我的耳边,连吃饭.睡在我的脑海里蹦来蹦去的. 由于这几天的交流时间.讨论,对于理解容器逐渐加深. 理论上的东西终归要落实到实践,今天就借 ...

  3. 【spring源码分析】IOC容器初始化(总结)

    前言:在经过前面十二篇文章的分析,对bean的加载流程大致梳理清楚了.因为内容过多,因此需要进行一个小总结. 经过前面十二篇文章的漫长分析,终于将xml配置文件中的bean,转换成我们实际所需要的真正 ...

  4. 【spring源码分析】IOC容器初始化(一)

    前言:spring主要就是对bean进行管理,因此IOC容器的初始化过程非常重要,搞清楚其原理不管在实际生产或面试过程中都十分的有用.在[spring源码分析]准备工作中已经搭建好spring的环境, ...

  5. 【spring源码分析】IOC容器初始化(二)

    前言:在[spring源码分析]IOC容器初始化(一)文末中已经提出loadBeanDefinitions(DefaultListableBeanFactory)的重要性,本文将以此为切入点继续分析. ...

  6. 【spring源码分析】IOC容器初始化(三)

    前言:在[spring源码分析]IOC容器初始化(二)中已经得到了XML配置文件的Document实例,下面分析bean的注册过程. XmlBeanDefinitionReader#registerB ...

  7. 【spring源码分析】IOC容器初始化(四)

    前言:在[spring源码分析]IOC容器初始化(三)中已经分析了BeanDefinition注册之前的一些准备工作,下面将进入BeanDefinition注册的核心流程. //DefaultBean ...

  8. 【spring源码分析】IOC容器初始化(七)

    前言:在[spring源码分析]IOC容器初始化(六)中分析了从单例缓存中加载bean对象,由于篇幅原因其核心函数 FactoryBeanRegistrySupport#getObjectFromFa ...

  9. 【spring源码分析】IOC容器初始化(十)

    前言:前文[spring源码分析]IOC容器初始化(九)中分析了AbstractAutowireCapableBeanFactory#createBeanInstance方法中通过工厂方法创建bean ...

随机推荐

  1. css清除浮动主要方法

    1.浮动元素尾部添加空div标签,设置css为clear:both: 缺点:如果页面浮动布局多,则需要添加较多div: 2.父级元素定义伪类:after和zoom:1: .father:after{d ...

  2. raspberrypi 3代B 配置摄像头

    raspberrypi 3代B 配置摄像头 硬件环境: 树莓派3B (element 14版) 树莓派3夜视摄像头800万像素(element 14版) 金士顿 64GB TF Class 10 UH ...

  3. [数据清洗]- Pandas 清洗“脏”数据(二)

    概要 了解数据 分析数据问题 清洗数据 整合代码 了解数据 在处理任何数据之前,我们的第一任务是理解数据以及数据是干什么用的.我们尝试去理解数据的列/行.记录.数据格式.语义错误.缺失的条目以及错误的 ...

  4. Life in Changsha 第二次scrum冲刺

    第二次冲刺   第二次冲刺任务 设计留言板功能. 用户故事 用户打开“生活在长大”的界面 程序首页展示校园服务,论坛等相关信息 用户选择留言板 程序界面跳转 用户查看留言,并可以输入留言内容 提交后留 ...

  5. 部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常

    最近,在使用Jenkins对工程一键部署的时候,出现调用Tomcat Manager 异常,对其解决方案特记于次. 异常信息 可能存在的异常:(1)Cannot invoke Tomcat manag ...

  6. Jenkins:基于linux构建ivy项目

    Jenkins:基于linux构建ivy项目 (二) 基于以上<Jenkins:VMware虚拟机Linux系统的详细安装和使用教程(一)>的配置再进行对ivy项目构建: 启动tomcat ...

  7. 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建

    本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单. 1.新建项目 首先,打开eclipse,新建一个web项目. ...

  8. 浅谈MVC MVP MVVM

    复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用. 它本身很容易理解,但是要讲清楚,它与衍生的 MVP ...

  9. SQL Server 禁用扩展存储过程

    概述 扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL.扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运 ...

  10. c#快速写本地日志

    很多人的程序在本地运行是好的,但是发布在服务器上后就会有各种各样的问题,但是服务器上又不能直接调试,所以直接读写本地日志成为解决问题的关键,我这个方法,会在发布网站的根目录自动创建 log.txt,并 ...