IoC概念以及目标

  

  IoC就是让原本你自己管理的对象交由容器来进行管理,其主要的目的是松耦合.

IoC发展史

  既然IoC的目标是为了松耦合,那它怎么做到的?

  

  最后目标:降低对象之间的耦合度,IoC技术加入了配置把编码中对象的耦合度降低了.

IoC的底层原理

  IoC底层使用的技术包括:

     (1)xml配置文件

     (2)dom4j解决xml

     (3)工厂设计模式

     (4)反射  

        

IoC应用入门

  一.导入jar包

    IoC是Spring framework的基础技术,所以需要导入基础包;

    

  二.创建类,在类里面创建方法

    需要创建交与容器的类模板(拥有getter和setter的POJO类)

    

  三.创建spring配置文件,配置创建类

    (1)spring的核心配置文件名称和位置不是固定的,

    官方推荐放置于src下面,命名为applicationContext.xml

    (2)引入schema约束

    

    

    (3)配置对象创建

    

  四.测试对象创建

      

xml配置文件头部提示错误

  解决方法是把schema约束引入spring,把约束文件引入到spring中.

   

   

IoC的三种配置管理方式

  xml

    实例化的三种方式

      第一种使用类无参构造(重点)

        

      第二种使用静态工厂来进行实例化

      

      

      第三种使用实例工厂创建

      

      

  bean标签常用的属性

     常用属性有id, class, name, scope

     id用于创建标识

     class键入类的全路径名,引入模板类

     name和id功能一致,但name允许包含特殊字符

     scope用于指定创建类的方式以及其使用范围,参数如下

       -singleton  单例创建对象,也就是始终都复用同一个对象,不会进行第二轮的创建

       -prototype  每次创建都会创建一个新的对象

       -request   创建对象并放置到request域中

       -session  创建对象并放置到session域中

       -globalSession  用于实现单点登录功能,比如百度下有百度云,百度翻译,百度相册之类多个应用,但是你只要登录上一个位置,多个位置都可以使用登录信息,这就是单点登录;这个参数基本不会使用,因为有一种就redis的技术更好地实现了这种功能.

  属性注入

    属性注入三种方式

      

  set方法注入属性,其中包含基础属性注入,对象属性注入,复合属性注入

    基础属性注入

      

      

    对象属性注入

      

      

  

    复合属性的注入

      1.数组

      2.list集合

      3.map集合

      4.properties

<bean id="person" class="com.harry.ioc.test">
        <!-- 数组 -->
        <property name="arrs">
            <list>
                <value>引用名1</value>
                <value>引用名2</value>
                <value>引用名3</value>
            </list>
        </property>

        <!-- list -->
        <property name="list">
            <list>
                <value>引用名4</value>
                <value>引用名5</value>
                <value>引用名6</value>
            </list>
        </property>

        <!-- map -->
        <property name="map">
            <map>
                <entry key="aa" value="引用名7"></entry>
                <entry key="bb" value="引用名8"></entry>
                <entry key="cc" value="引用名9"></entry>
            </map>
        </property>

        <!-- properties -->
        <property name="properties">
            <props>
                <prop key="driverclass">com.mysql.jdbc.Driver</prop>
                <prop key="username">root</prop>
            </props>
        </property>
    </bean>

复合属性注入

  有参构造函数注入属性

      

  javaConfig类

    

  注解

    一.注解介绍

      1.代码里特殊标记,使用注解可以完成功能

      2.注解写法 @(属性名称=属性值)

      3.注解可以使用在类,方法和属性之上

    二.spring的注解开发导入包

      1.core包

        

      2.aop包

        

    三.创建类和方法

    

    四.创建spring配置文件引入新约束,开启注解扫描

      

      

  五.注解创建对象

    1.使用注解标记类

    

    2.创建对象有四个注解标记

      

    3.创建对象方式,单例还是多例

      

  六.注解注入属性

    1.创建service类,创建dao类

      

      

    2.在service类使用注解注入dao

     方式一.采用自动装载@Autowired

       

     方式二.采用@Resource获取特定名称对象

        

   七.配置文件和注解混合使用

     1.配置文件创建对象注入容器

        

     2.使用注解让容器实现属性注入

        

IoC和DI的区别所在

  很多人认为IoC和DI是一个事物的两种说法,其实之间存在着细微的不同.

    -IoC,控制反转,将对象交由容器进行管理;

    -DI,依赖注入,将属性注入于对象之中;

    -DI是依赖于控制反转技术的,如果使用IoC技术也就无法使用注入功能.

Spring整合web项目的原理

   

1 加载spring核心配置文件,

  

2 实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成

3 实现原理

(1)ServletContext对象

(2)监听器

(3)具体使用:

  - 在服务器启动时候,为每个项目创建一个ServletContext对象

  - 在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建

  - 使用监听器监听到ServletContext对象创建时候,

    -- 加载spring配置文件,把配置文件配置对象创建

    -- 把创建出来的对象放到ServletContext域对象里面(setAttribute方法)

  - 获取对象时候,到ServletContext域得到 (getAttribute方法)

框架应用:Spring framework (一) - IoC技术的更多相关文章

  1. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系

    XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...

  2. Spring框架简介 Spring Framework Introduction

    Introduction The Spring Framework provides a comprehensive programming and configuration model for m ...

  3. 框架应用:Spring framework (二) - AOP技术

    基础概念 线程中的方法栈 java程序虚拟机启动时会载入程序码,虚拟机会为每一条正在运行的线程生成一个方法调用栈,线程以方法运行为执行单位. AOP概念以及目标 AOP是面向切面编程,其实就是在不修改 ...

  4. Spring Framework Part2 IOC

    spring serious of blog edit by 马士兵教育 IoC概念 IoC是一个概念,是一种思想,其实现方式多种多样.当前比较流行的实现方式之一是DI. 基于XML的DI Appli ...

  5. Spring Framework之IoC容器

    Spring IoC 概述 问题 1.什么是依赖倒置? 2.什么是控制反转? 3.什么是依赖注入? 4.它们之间的关系是怎样的? 5.优点有哪些? 依赖倒置原则 (Dependency Inversi ...

  6. Spring Framework Part3 IoC and Dynamic Proxy

    spring serious of blog edit by 马士兵教育 Maven方式创建Spring工程 工程创建 1.新建项目 选择Maven Project 2.勾选 Create a sim ...

  7. JavaIOC框架篇之Spring Framework

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  8. 译:Spring框架参考文档之IoC容器(未完成)

    6. IoC容器 6.1 Spring IoC容器和bean介绍 这一章节介绍了Spring框架的控制反转(IoC)实现的原理.IoC也被称作依赖注入(DI).It is a process wher ...

  9. Spring框架学习(2)IOC学习

    内容源自:IOC理解   spring ioc注入的三种方式  ioc工厂bean深入理解 耦合性,在java中表现为类之间的关系,耦合性强说明类之间的依赖关系强: 侵入性:框架对代码的侵入: 在传统 ...

随机推荐

  1. JSON以及Java转换JSON的方法(前后端常用处理方法)

    )); map.put("arr", new String[] { "a", "b" }); map.put("func" ...

  2. - Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <script>, as they will not be parsed.

    vue.js报错如下: - Templates should only be responsible for mapping the state to the UI. Avoid placing ta ...

  3. linux各个文件夹的用途

    英文: /bin: where binary programs live. /boot: the special programs that start the system when you tur ...

  4. BotVS开发基础—2.2 下限价单 交易

    代码 import json def main(): Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, ", ORDER_ ...

  5. 四种JavaScript隐式类型转换的总结

    一般存在四种情况,JavaScript会对变量的数据类型进行转换. 目录 * if中的条件会被自动转为Boolean类型 * 会被转为false的数据 * 会被转为true的数据 * 参与+运算都会被 ...

  6. Firefox插件推荐

    介绍一下我常用的几个Firefox插件,不一定适合所有人. 图中所示4个插件是我仅有的4个addons,除了stylish,其他几个已经伴随我多年. 1.Adblock Plus(强烈推荐) 广告拦截 ...

  7. jQuery绑定事物处理器

    绑定与移除1..bind() 绑定事件可以有2个或者3个参数:第一个参数为事件类型 第二个参数为处理函数 第三个为布尔类型 on()事件代替2..delegate() 事件委托,三个参数,第一个为选择 ...

  8. MongoDB导入导出以及数据库备份

    -------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport     1.概念:         mongoDB中的m ...

  9. 最新Windows下Redis集群

    实现简单的Windows下Redis集群配置,以下是配置过程中出现的几个问题: [1]逐个启动7001 7002 7003 7004 7005 7006节点时,出现createing server T ...

  10. SQL 软解析和硬解析详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt329 当客户端进程,将SQL语句通过监听器发送到Oracle时, 会触发一个 ...