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>

最新文章

  1. 【emWin】例程一:emWin系列教程简介
  2. 初学者-微信小程序 问题解决办法记录
  3. DMA控制
  4. 深入浅出Symfony2 - 结合MongoDB开发LBS应用
  5. MAC下反編譯安卓APK
  6. 雷赛dmc2410控制卡,驱动器 光栅 加电机
  7. [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B
  8. PostgreSQL Replication之第十四章 扩展与BDR
  9. Hibernate级联操作
  10. android获取Mac地址和IP地址
  11. [转]云计算之hadoop、hive、hue、oozie、sqoop、hbase、zookeeper环境搭建及配置文件
  12. 201521123003《Java程序设计》第5周学习总结
  13. 1、IDEA的常用快捷键
  14. 【bfs】拯救少林神棍(poj1011)
  15. 使用scrapy爬取百度股票
  16. SEO高手和SEO屌丝的八个区
  17. Python3 tkinter基础 LabelFrame Radiobutton 形成两组不相互限制的单选按钮
  18. win10上安装keras
  19. TCP keep-alive翻译
  20. 深入了解Looper、Handler、Message之间关系

热门文章

  1. CSS奇思妙想图形(心形、气泡三角形、切角、梯形、饼图等)
  2. php数组排序和查找的算法
  3. MySQL之数据的insert-delete-update操作
  4. 第七周PTA作业
  5. 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现
  6. 算法第四版 coursera公开课 普林斯顿算法 ⅠⅡ部分 Robert Sedgewick主讲《Algorithms》
  7. 使用Github pages+jekyll搭建自己的博客(windows版)
  8. Django之ORM字段和参数
  9. Python脚本自动提取和替换代码中的中文
  10. JAVA_SE基础——32.this关键字调用本类的构造方法