zoukankan      html  css  js  c++  java
  • Spring概述、ICO理论

    > https://www.bilibili.com/video/BV1WE411d7Dv?from=search&seid=320966476413891167

    1、spring

    1.1、简介

    • Spring:软件行业的春天。

    • 2002,首次推出了Spring框架雏形:inteface21

    • Spring框架以inteface21框架为基础,经过重新设计,并且丰富内涵,于2004年3月24发布1.0正式版

    • Rod Johnson Spring框架的创始人。

    • Spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架。

    • SSH : struct2 + Spring + Hibernate

    • SSM : SpringMvc + Spring + Mybatis

    官网

    Githbu下载地址

    1.2 优点

    • Spring是一个开源的免费的框架(容器)。
    • Spring是一个轻量级的,非入侵式的框架。
    • 控制反转(IOC) 面向切面编程(AOP)。
    • 支持事务的处理,对框架的支持。

    总结:Spring就是一个轻量级的控制反转和面向切面编程的框架

    1.3 组成

    1.4 拓展

    • Spring Boot
      • 一个快速开发的脚手架。
      • 基于Spring Boot可以快速开发单个微服务。
      • 约定大于配置!
    • Spring Cloud
      • SpringCloud是基于Spring Boot实现的。

    现在大多数公司都在使用SpringBoot进行快速开发,学习Springboot的前提,需要掌握Spring及SpringMvc。

    弊端:发展的时间太久,违背了原来的理念,配置十分繁琐,“配置地狱”

    2、IOC理论推导

    1. UserDao 接口

    2. UserDaoImpl 实现类

    3. UserService 业务接口

    4. UserServiceImpl 业务实现类

    在之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改源代码,如果代码量十分大,修改一次的成本代价十分昂贵、

    我们使用一个set接口实现,已经发生了革命性变化!

    private UserDao userDao;
    
    //利用set进行动态实现值的注入
    public void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }
    
    • 之前,程序是主动创建对象!控制权在程序猿手上。
    • 使用set注入后,程序不再具有主动性,而是变成了被动的接受对象。

    这种思想,从本质上解决了问题,我们程序猿不用再去管理对象的创建,系统的耦合性大大降低。
    可以更加专注在业务的实现上。(IOC的原型)

    3、IOC本质

    控制反转(inversion of control), 是一种设计思想,DI(dependency injection依赖注入)是IOC的一种方法.未使用IOC的程序中,
    我们使用面向对象编程,对象的创建和对象之间的依赖关系完全硬编码在程序中,对象的创建是由程序自己控制的。

    控制反转就是将对象的创建转移给了第三方。

    采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

    控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。

    思考

    • 对象由谁创建
    • o对象是由Spring创建的
    • 对象的属性是怎么设置的?
    • 对象的属性是由Spring容器设置的

    这个过程就叫控制反转:

    • 控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的.
    • 反转:程序本身不创建对象,而变成被动的接收对象.
    • 依赖注入:就是利用set方法来进行注入的.
      • IOC是一-种编程思想 ,由主动的编程变成被动的接收.
      • 可以通过newClassPathXmlApplicationContext去浏览一下底层源码 .
      • OK ,到了现在,我们彻底不用再程序中去改动了,要实现不同的操作,只需要在xm配置文件中进行|
      • 修改,所谓的IoC,-句话搞定:对象由Spring来创建,管理,装配!

    4、IOC创建对象方式

    1、使用无参构造创建对象,默认。

    2、如果使用有参构造创建对象
    1、下标赋值

    <bean id="hello" class="cn.zync.pojo.Hello">
       <constructor-arg index="0" value="spring"></property>
    </bean>
    

    2、类型(不建议使用,如果多个属性类型一致,就凉凉)

    <bean id="hello" class="cn.zync.pojo.Hello">
       <constructor-arg type="java.lang.String" value="spring"></property>
    </bean>
    

    3、参数名

    <bean id="hello" class="cn.zync.pojo.Hello">
      <constructor-arg name="str" value="spring"></property>
    </bean>
    

    总结:在配置文件加载的时候,容器中管理的对象就已经初始化了!

  • 相关阅读:
    jmeter入门----安装及简单使用
    python的学习路线
    利用selenium模块来编写网络爬虫
    软件测试的一些建议
    作为面试官的一些心得
    测试中常用的python第三方库
    Bootstrap:Bootstrap_table第一篇:快速用bootstrap_table(支持参数)筛选并展示数据,固定表格前几列,实现表格单元格编辑
    JS插件:fullCalendar图解
    Python脚本:实现对象集合List导入到excel表格,支持mysql,postergrsql,MongoDB
    Python脚本:实现excel表格导入到数据库,支持mysql,postgresql,MongoDB
  • 原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/15234669.html
Copyright © 2011-2022 走看看