IOC与DI的区别?

  IOC:控制反转(Inversion of Control是面向对象的一种设计原则,可以用来降低计算机之间的耦合度,其中最常见的是依赖注入).是实现的目标

  DI:是实现IOC的一种手段Dependency Injection ,依赖注入简称DI

  DL:依赖查找 Dependency Lookup,使用场景,数据库配置。

Dependency Injection依赖注入

  依赖:需要、基于。

  注入:进行解耦,需要的时候再进行使用

spring实现IOC的思路和方法
  spring实现IOC的思路是提供一些配置信息用来描述类之间的依赖关系,然后由容器去解析这些配置信息,继而维护好对象之间的依赖关系,前提是对象之间的依赖关系必须在类中定义好,比如A.class中有一个B.class的属性,那么我们可以理解为A依赖了B。既然我们在类中已经定义了他们之间的依赖关系那么为什么还需要在配置文件中去描述和定义呢?
spring实现IOC的思路大致可以拆分成3点

  1应用程序中提供类,提供依赖关系(属性或者构造方法)

  2把需要交给容器管理的对象通过配置信息告诉容器(xml、annotation,javaconfig)

  3把各个类之间的依赖关系通过配置信息告诉容器

  配置这些信息的方法有三种分别是xml,annotation和javaconfig
  维护的过程称为自动注入,自动注入的方法有两种构造方法和setter
  自动注入的值可以是对象,数组,map,list和常量比如字符串整形等
 
spring编程的风格
  schemal-based----基于模型---xml
  annotation-based---基于注解--annotation
  java-based---基于java-java Configuration
 
spring的注入方法
  构造方法
  set方法
  spring3中提供了接口注入,但是在spring4中被取消了,太不人性化。已经取消了
  取消的原因:有了set方式注入,接口注入就多次一举了,并且耦合度也提高了 https://blog.csdn.net/xuebing1995/article/details/75389143
  
 
spring中注解@component与@service、@controller的区别
  官网中有详细解释:Spring提供进一步典型化注解:@Component@Service,和 @Controller@Component是任何Spring管理组件的通用构造型。@Repository@Service和,@Controller@Component更具体的用例的专业化(分别在持久性,服务和表示层)。因此,您可以来注解你的组件类有 @Component,但是,通过与注解它们@Repository@Service或者@Controller ,你的类能更好地被工具处理,或与切面进行关联。例如,这些刻板印象注释成为切入点的理想目标。@Repository@Service并且@Controller还可以在Spring Framework的未来版本中携带其他语义。因此,如果您在使用之间进行选择@Component或者@Service对于您的服务层,@Service显然是更好的选择。同样,如前所述,@Repository已经支持将其作为持久层中自动异常转换的标记。
 
spring中的@autowirter与@resource的区别
  autowriter是默认的byType方式,如果根据byType没有找到,会根据byName去查找。如果spring容器中存在多个此类型的类则会根据byName查找,byName是根据属性的名字去查找对应的类。如果根据属性名字没有查找到相关则会报错,提示存在多个相同类型的类。
  resource是默认的byName方式,是根据属性的名字创建代理类中的方法。切记不是set方式
  什么是byType?就是spring基于类的类型通过上下文查找对象依赖。(个人理解,若理解错误请及时指出)
  什么是byName?就是spring基于方法名字查找对象依赖中的方法。(个人理解,若理解错误请及时指出)
  扩展:根据官网所说,我们可以重写BeanNameGenerator类,并重新设置spring中查找上下文中的依赖关系的命名规范。
 
bean的作用域
  此点本人再开发工作过程中确实遇到过,简单说一下经历。项目是改造项目,由很老的项目改造成springMVC项目,项目中的架构师没有处理bean的作用域,默认的(也就是singleton),本人在工作过程中遇到签单逻辑的时候,服务启动后,第一次签单成功,但是第二次之后总是失败,于是就打了断点,发现进入逻辑方法后,所有的全局属性都是有值的(刚刚进入方法,还没赋值),结果查找问题,发现bean的作用于问题导致。
  singleton、prototype、request、session、application、websocket

  

Spring-1-IOC的更多相关文章

  1. Spring的IOC和AOP之深剖

    今天,既然讲到了Spring 的IOC和AOP,我们就必须要知道 Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例 ...

  2. Spring框架IOC容器和AOP解析

    主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.S ...

  3. Spring总结—— IOC 和 Bean 的总结

    一.Spring 官方文档中给出的 Spring 的整体结构. 二.我自己所理解的 Spring 整体结构图. 三.本次总结 Spring 核心部分 1.从上面图中可以看出,Beans 和 Conte ...

  4. spring的IOC和AOP

     spring的IOC和AOP 1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是 ...

  5. spring容器IOC创建对象<二>

    问题?spring是如何创建对象的?什么时候创建对象?有几种创建方式?测试对象是单例的还是多例的 ?对象的初始化和销毁? 下面的四大模块IOC的内容了!需要深刻理解 SpringIOC定义:把对象的创 ...

  6. Spring中IoC的入门实例

    Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...

  7. Spring中IOC和AOP的详细解释

    我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过s ...

  8. Spring的IoC应用

    IoC(Inversion of Control,控制反转) Spring的IoC应用是其框架的最大的特点,通过依赖注入可以大大降低代码之间的耦合度,从而实现代码和功能之间的分离.在代码中可以不直接和 ...

  9. Spring 实践 -IoC

    Spring 实践 标签: Java与设计模式 Spring简介 Spring是分层的JavaSE/EE Full-Stack轻量级开源框架.以IoC(Inverse of Control 控制反转) ...

  10. 挖坟之Spring.NET IOC容器初始化

    因查找ht项目中一个久未解决spring内部异常,翻了一段时间源码.以此文总结springIOC,容器初始化过程. 语言背景是C#.网上有一些基于java的spring源码分析文档,大而乱,乱而不全, ...

随机推荐

  1. Table View Programming Guide for iOS---(四)---Navigating a Data Hierarchy with Table Views

    Navigating a Data Hierarchy with Table Views 导航数据表视图层次 A common use of table views—and one to which ...

  2. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时4

    课时4 数据驱动的图像分类:K最邻与线性分类器(上) 图像分类之前,我们需要将图片转换成一张巨大的数字表单,然后从所有种类中,给这个表单选定一个标签. 为什么分类问题是个困难的问题:图像分类难点是,当 ...

  3. 基于FBX SDK的FBX模型解析与加载 -(二)

    http://blog.csdn.net/bugrunner/article/details/7211515 5. 加载材质 Material是一个模型渲染时必不可少的部分,当然,这些信息也被存到了F ...

  4. bzoj 1058: [ZJOI2007]报表统计【set】

    我想写FHQtreap的!是set自己跑进代码的!因为太好写了 是有点慢--洛谷上不吸氧会T一个点 就是,用一个set p维护所有点值,ans维护MIN_SORT_GAP的答案,每次insert一个点 ...

  5. 重装 Cloudera CDH 5,启动oozie 出错处理

    参考文章:http://community.cloudera.com/t5/Cloudera-Manager-Installation/Error-CDH5-oozie/td-p/8686 按照文章说 ...

  6. macos php安装扩展sqlsrv连接sqlserver

    Install the PHP Drivers for SQL Serve sudo pecl install pdo_sqlsrv   sudo pecl install sqlsrv 微软官方文档 ...

  7. nginx添加模块

    [root@VM_0_3_centos nginx]# ./sbin/nginx -V nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 ...

  8. 优先队列 HDOJ 5437 Alisha's Party

    题目传送门 题意:一人过生日,很多人排着队送礼物.排队顺序是礼物价值大的优先,如果相等先来的优先.有m次开门,当t个人到了会开门让p个人进门.最后一次让门外的所有人按顺序进门.有q次询问,问第x个进门 ...

  9. (转)深入理解Java对象的创建过程

    参考来源:http://blog.csdn.net/justloveyou_/article/details/72466416 摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一 ...

  10. Cannot call sendRedirect()/forward after the response has been committed的问题

    问题其实已经很明确了,说明就是不能重定向,因为已经有response了. 然后一检查,是前面已经用servlet的printWriter打印东西了. 所以,重定向前 必须先保证没有任何的输出,包括:1 ...