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. Powerdesigner 连接mysql 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM014

    系统环境: WIN7 64位系统, 用Powerdesigner 连接MySQL 逆向工程时 报错 "在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM01 ...

  2. linux系统参数调优

    执行 ulimit -a 查看系统配置 需要修改max user processes 和 open files 这两个值 vim /etc/security/limits.conf   #新增下面几行 ...

  3. linux磁盘分区 简要

    基础知识: 以机械磁盘来说,磁盘的组成为盘片.机械手臂.磁头.主轴马达. 数据被写入在盘片上. 盘片分为 扇区Sector 柱面Cylinder 整块磁盘的第一个扇区特别重要 用来存放主引导分区Mas ...

  4. 如何生成转储(dmp)文件--工具篇

    转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种生成转储文件的方法. 1. 任务管理器 任务 ...

  5. js排序与重组

    前几天同学发给我一个问题,思路想整理一下,也供大家参考.实际上这道题本质就是考察的是去重与排序的问题.好了闲话少说,上题. function input(req){     if(req<=10 ...

  6. Docker+Gogs搭建个人Git服务

    欢迎 经常使用Github的我,Github它功能强大,操作简单,不用FQ,所以大家会使用Github进行代码托管,但是,Github的私仓收费的,而且对于普通个人用户来说,价格也不便宜.很多人搭建自 ...

  7. 关于request、response转发与重定向的简述

    在做页面的请求与响应的时候我们多用request与response进行操作,而我们大家也知道,request是表示用户发向服务器的请求,而response是对用户请求的一个响应. 关于转发和重定向,通 ...

  8. 基于redis的延迟消息队列设计

    需求背景 用户下订单成功之后隔20分钟给用户发送上门服务通知短信 订单完成一个小时之后通知用户对上门服务进行评价 业务执行失败之后隔10分钟重试一次 类似的场景比较多 简单的处理方式就是使用定时任务 ...

  9. Haproxy基于ACL做访问控制

    author:JevonWei 版权声明:原创作品 haproxy配置文档 https://cbonte.github.io/haproxy-dconv/ 基于ACL做访问控制(四层代理) 网络拓扑 ...

  10. CPU和GPU的差别

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt317 首先需要解释CPU和GPU这两个缩写分别代表什么.CPU即中央处理器, ...