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. 【Ubuntu 16】 SSH免密码登录

    免密码登录时两个机器的普通用户名都要相同,这里都是dream361 ,主机名可以不同,这里的主机名都是ubuntu 1.目前有两台机器master 和 slave 在这两台机器上都安装并启动ssh服务 ...

  2. composer安装报错Composer throws [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist

    解决方法:删除C:\Users\Administrator\AppData\Roaming\Composer\vendor\fxp下的文件

  3. Java6和Java8在Windows上共存

    0x00 需求 最近在做一个Android的项目,一开始安装的是Java8用于项目的开发.但是在项目后期需要用到drozer用于检测项目的安全性,要搭建drozer的测试环境必须要使用Java6,否则 ...

  4. Java面向对象-方法的值传递和引用传递

    Java面向对象-方法的值传递和引用传递 0 发布时间:『 2016-08-21 14:21』  博客类别:Java核心基础  阅读(197) 评论(0) Java面向对象-方法的值传递和引用传递 方 ...

  5. Html5笔记之第七天

    视频格式 格式 MIME-type MP4 video/mp4 WebM video/webm Ogg video/ogg MP4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 ...

  6. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  7. MatplotLib常用基本操作

    本文记录matlibplot常用基本操作,都是基本功能,不涉及复杂联合操作,其中各用法详细用法可参考官网: 1. 基本画图操作 ##mofan_matplotlib.pyplot import mat ...

  8. CentOS7.3虚拟机扩展数据磁盘

    操作之前需要重点查看: 由于扩容磁盘的操作非同小可,一旦哪一步出现问题,就会导致分区损坏,数据丢失等一系列严重的问题,因此建议:在进行虚拟机分区扩容之前,一定要备份重要数据文件,并且先在测试机上验证以 ...

  9. Spring @ResponseBody 返回中文乱码问题

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt102 今天在使用spring 的时候,发现中文返回的是乱码. 经过研究发现, ...

  10. 解决MVC模式文件下载附件中文名称乱码

    解决如下: 进行url编码:Server.UrlPathEncode(file.AttachmentName) return File(file.TempWorkPath, CommonTools.G ...