Spring是一个轻量级的控制反转(IOC)和面向切面(IOP)的容器框架

1.控制反转IOC(inversion of controller)
    IOC是一种概念,是把我们程序中类与类之间的依赖关系交给容器去处理,一般有两种方式:
        * 依赖查找DL(dependency lookup):程序根据查找方式,交给容器去查找
        * 依赖注入DI(dependency injection):程序不提供查找方式,提供合适的构造方法或者setter方法,让容器进行注入来解决依赖关系,spring的控制反转就是通过依赖注入来实现的
        
2.什么叫依赖?
    简单的说,一个类实现某个功能需要另外一个类的帮助来实现(模拟一个web登陆验证的功能),详见UserService.java
    
3.基于接口编程的开发方式
    当一个方法有多个实现的情况下,我们一般是基于接口的方式进行编程,详见UserServiceForInterface.java
    
4.依赖注入
    依赖注入DI是指一个对象需要另外一个对象的时候,无需在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序
    依赖注入是目前位置最好的解耦方式,因为依赖关系是依靠配置文件的方式组织在一起,而不是在程序中的硬编码
    
5:Spring的IOC容器通过依赖注入来实现程序之间的依赖关系,达到解耦的作用
    a : spring项目环境搭建需要的jar包
        * spring-beans-4.2.1.RELEASE.jar
        * spring-context-4.2.1.RELEASE.jar
        * spring-core-4.2.1.RELEASE.jar
        * spring-expression-4.2.1.RELEASE.jar
        * commons-logging.jar
        * hamcrest-core-1.3.jar
        * junit-4.11.jar
        * log4j-1.2.17.jar
        
    b:配置文件 applicationContext.xml,加上bean约束
        bean的约束在spring-framework-4.2.1.RELEASE\
        docs\spring-framework-reference\html\xsd-configuration.html文件查看
        
        
6:在spring文件上面实现依赖注入的两种方式
    1: 在配置文件定义我们的类    
    
     <!--相当于我们java代码的 UserService userService = new UserService()  -->
    <bean id= "userService"
                class = "com.tz.spring.sysmanage.service.UserServiceForSpring"></bean>  
     
     <!--相当于我们java代码的 UserDao userDao = new UserDao()  -->
     <bean id = "userDao"
             class = "com.tz.spring.sysmanage.dao.impl.UserDao"></bean>
             
     <!--相当于我们java代码的 UserDaoOther userDaoOther = new UserDaoOther()  -->
     <bean id= "userDaoOther"
             class= "com.tz.spring.sysmanage.dao.other.UserDaoOther"></bean>
    
    
    2:描述依赖关系有两种方式
    * 通过构造方法的方式注入:
        a:被依赖的类必须有构造方法
        b:在配置文件里面来描述依赖关系
        <bean id= "userService"  class = "com.tz.spring.sysmanage.service.UserServiceForSpring">
               <constructor-arg ref="userDao"></constructor-arg>           
                <constructor-arg ref="userDaoOther"></constructor-arg>             
           </bean>
    
    * 通过setter方法注入
        a:被依赖的类里面生成依赖类的setter方法
        b:在配置文件来描述依赖关系
        <bean id= "userService"
                class = "com.tz.spring.sysmanage.service.UserServiceForSpring">
        <property name="userDao" ref="userDaoOther"></property>
           </bean>

SpringIOC学习一的更多相关文章

  1. SpringIOC学习三

    基于注解的注入:就是用注解标签的方式替换掉我们xml配置文件里面bean的注册和依赖关系的描述    a:首先回顾IOC(控制反转),进行依赖注入需要做到两件事情:        1:注册类  2:描 ...

  2. SpringIOC学习二

    Spring的IOC容器通过依赖注入DI(dependency injection)来实现程序之间的依赖关系,达到解耦的方式依赖的方式:a.基于xml文件配置的注入    * 构造函数注入    * ...

  3. springIOC学习笔记

    目录 目的 引用 xml方式 配置 配置实例 使用 底层简单模拟 全注解方式 基础 包扫描方式 配置 使用 config方式 配置 使用 spring整合junit 引用 示例 目的 让spring统 ...

  4. SpringIOC学习_属性注入(依赖注入)

    一.应用场景:Spring会帮创建实现类的实例,但是有时候我们还需要在类中设置一些属性用于传入设置值,这些跟类紧密关联的属性就叫依赖,通过spring帮忙设置的过程叫依赖注入. 二.依赖注入的实现 A ...

  5. spring-Ioc学习笔记

    spring 是面向Bean的编程 Ioc (Inversion of Control) 控制反转/依赖注入(DI:Dependency Injection) Aop(Aspect Oriented ...

  6. 【转】Spring学习---SpringIOC容器的初始化过程

    [原文]https://www.toutiao.com/i6594400249429623304/ SpringIOC容器的初始化过程 简单来说,IoC容器的初始化是由refresh()方法来启动的, ...

  7. Spring技术内幕:SpringIOC原理学习总结

    前一段时候我把Spring技术内幕的关于IOC原理一章看完,感觉代码太多,不好掌握,我特意又各方搜集了一些关于IOC原理的资料,特加深一下印象,以便真正掌握IOC的原理. IOC的思想是:Spring ...

  8. 【学习】006数据交换格式与SpringIOC底层实现

    课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...

  9. Spring学习总结四——SpringIOC容器四

    一:spring容器给bean对象注入属性值 1:注入基本属性值 a. 创建MessageBean类: /** * */ package com.hlcui.dao; /** * @author Ad ...

随机推荐

  1. lua continue实现

    --第一种 , do while true do == then break end -- 这里有一大堆代码 -- -- break end end --第二种 i = ) do if () then ...

  2. JavaWeb学习笔记六 JSP

    JSP技术 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java s ...

  3. Java基础学习笔记五 Java基础语法之面向对象

    面向对象 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式.面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.例如:公司打扫卫生( ...

  4. 项目Alpha冲刺Day8

    一.会议照片 二.项目进展 1.今日安排 前端界面框架基本完成,剩下侧边栏与权限相关部分未完成.前端路由异常拦截完成.项目结构与开发流程规定完成.后台开发规定小变更. 2.问题困难 组件的拆分与否和组 ...

  5. 201621123060《JAVA程序设计》第二周学习总结

    1.本周学习总结 本周学习了JAVA中的引用类.包装类(学习了一种语法:自动装箱)和数组(遍历数组的新方法foreach循环). 2. 书面作业 1.String-使用Eclipse关联jdk源代码 ...

  6. DistBlockNet:A Distributed Blockchains-Based Secure SDN Architecture for IOT Network

    现有问题 随着IOT中智能设备多样性和数目的增加,IOT的灵活性,效率,可用性,安全性和可扩展性的问题越来越明显. 实验目标 按照高适应性,可用性,容错性,性能,可靠性,可扩展性和安全性的设计原则,构 ...

  7. Django Haystack 全文检索与关键词高亮

    Django Haystack 简介 django-haystack 是一个专门提供搜索功能的 django 第三方应用,它支持 Solr.Elasticsearch.Whoosh.Xapian 等多 ...

  8. 《招一个靠谱的移动开发》iOS面试题及详解(下篇)

    iOS面试知识点 现在进入本篇的正题.本篇的面试题是我认为比较好的iOS开发基础知识点,希望大家看过这后在理解的基础上掌握而不是死记硬背.死记硬背很快也会忘记的. 1 iOS基础 1.1 父类实现深拷 ...

  9. 坑爹了多少年的html元素垂直居中问题

    原文章:https://www.w3cplus.com/css3/a-guide-to-flexbox.html 如果你的元素有固定高度的话 父元素用display: flex;height:100p ...

  10. Mongodb 3 查询优化(语句优化、建索引)

    一.explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对Mon ...