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. ORACLE PL/SQL 实例精解之第六章 迭代控制之一

    6.1 简单循环 简单循环,就想其名称一张,是一种最基本循环.简单循环具有如下结构 LOOP STATEMENT 1; STATEMENT 2; ... STATEMENT N; END LOOP; ...

  2. 如何开始学习Go语言

    除了Java.Python和JavaScript之外,如果要开始学习一门新语言的话,我想应该是Go! Go语言正在被越来越多的公司使用.我们公司的后端服务已经全面采用Go语言实现了. 最开始接触Go语 ...

  3. web安全之XSS攻击原理及防范

    阅读目录 一:什么是XSS攻击? 二:反射型XSS 三:存储型XSS 四:DOM-based型XSS 五:SQL注入 六:XSS如何防范? 1. cookie安全策略 2. X-XSS-Protect ...

  4. go语言 rsa加密

    // rsa.go package main import ( "crypto/rand" "crypto/rsa" "crypto/x509&quo ...

  5. UvaLive6439(string使用、回文串)

    样例手写一写很容易发现规律(前后一样的串,则ans+=2),实现起来却忘了string的便捷性,其实根本用不到哈希. ; int n, ans; string s, t1, t2; int main( ...

  6. HDU - 6063 RXD and math

    Bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6063 打表发现规律是n^k #include <iostream> #inc ...

  7. Educational Codeforces Round 20 A

    Description You are given matrix with n rows and n columns filled with zeroes. You should put k ones ...

  8. [已读]响应式web设计实践

    薄的一本,彩印,书质量和内容都不错. 响应设计三要素:媒体查询.流动布局.自适应图片.

  9. python_面向对象(6)

    第1章 递归函数 1.1 概述 1.2 练习 1.3 二分查找 第2章 面向对象•类 2.1 类的介绍 2.2 书写格式 2.3 类的属性 2.4 self介绍 2.5 类属性补充 2.6 调用查看静 ...

  10. 牛客网Java刷题知识点之自动拆装箱

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=5 ...