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创建这个对象的过程中,将这个对象所依赖的属性注入进入。

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

  • 相关阅读:
    并查集
    强联通分量,缩点
    最短路径
    最小生成树
    拓扑排序
    图的遍历
    图论基础知识
    数据库四种隔离级别
    MySQL 索引 乐观锁 悲观锁
    MYSQL+正则
  • 原文地址:https://www.cnblogs.com/greycdoer0/p/13192686.html
Copyright © 2011-2022 走看看