zoukankan      html  css  js  c++  java
  • Spring入门到进阶

    Spring的概述

    1、Spring是什么?
    一个轻量级的开源框架,可以使我们的开发变得简单,是一个一站式的框架。

    2、Spring的优点有哪些?
    1.方便解耦,简化开发
    2.AOP编程的支持
    3.声明式事务的支持
    4.方便程序的测试
    5.方便继承各种优秀框架
    6.降低JavaEE API的使用难度

    3、Spring的模块有哪些?
    Spring核心包:
    1.Beans
    2.Core
    3.Context
    4.SpEl
    完整的模块架构图,请看下面的图

    Spring的IOC底层原理实现

    传统方式的开发:

    UserService us = new UserService();
    

    在Web层直接创建一个业务层的对象
    缺陷:没有面向接口编程

    改进:通过面向接口编程

    UserService us = new UserServiceImpl();
    

    在Web层通过业务层的接口创建了实现类
    缺点:Web层与业务层产生了耦合,不符合OCP原则(修改关闭,扩展开放)

    改进:使用工厂模式

    由原来直接用接口创建实现类 改为 通过用工厂来创建实现类
    工厂类代码:

    class FactoryBean{
    public UserService getUs() {
    return new UserServiceImpl();
    }
    ......
    }
    

    耦合关系变为:接口和工厂类耦合
    获得对象实例:UserService us = FactoryBean.getUs();
    如果需要切换底层实现,虽然不用改获得实例的代码但是需要改工厂类的代码。

    !!!那有没有一种方法可以不需要修改任何的源代码呢?

    方案:使用工厂+反射+配置文件(xml)(可以完成程序的解耦合)

    <bean id="us" class:"com.imooc.UserServiceImpl"/>
    
    class FactoryBean{
        public static Object getBean(String id) {
            ...
            反射
        }
    }
    

    原理:在工厂类中通过解析xml文件的标签,根据传入的id去创建对应类型的对象。

    IOC : Inverse of Control 反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理

    DI :Dependency Injection 依赖注入的概念,就是在Spring创建这个对象的过程中,将这个对象所依赖的属性注入进入。

    依赖注入的目的是在代码之外管理程序间组件的依赖关系;依赖注入减低了程序组件间的耦合。

  • 相关阅读:
    洛谷 U138347 贩卖武器
    洛谷 U138346 统治王国
    小技巧—对树中叶子节点的记录
    洛谷 U138345 太极棋
    洛谷 U138343 炼金术士
    CF1038C Gambling
    CF1037A Packets
    如何看待神&#183;QYB自创算法爆锤成名已久的计算机科学家Robert&#183;Tarjan
    浅谈拓扑排序和元素间依赖性
    NOIP 2013 车站分级
  • 原文地址:https://www.cnblogs.com/greycdoer0/p/13192686.html
Copyright © 2011-2022 走看看