1、Spring


1.1、简介

  • Spring:春天----------->给软件行业带来了春天!

  • 2002,首次推出了Spring框架的雏形:interf21框架!

  • Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。

  • Rod Johnson ,Spring Framework创始人,悉尼大学音乐学博士,计算机学位

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

  • SSH: Struct2+Spring +Hibernate!

  • SSM: SpringMvc+Spring+Mybatis!

官网:Spring Framework

官网下载地址:repo.spring.io

GitHub:GitHub - spring-projects/spring-framework: Spring Framework

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency> ctrl+shift+o 导入

1.2、优点

  • Spring使一个开源的免费的框架(容器)!

  • Spring使一个轻量级的、非入侵式的框架!

  • 控制反转(IOC),面向切面编程(AOP)!

  • 支持事务的处理,对框架整合的支持!

总结一句话:Springjiushi+一个轻量级的控制反转(IOC)和面向切面编程的框架!

1.3、组成

1.4、扩展

在Spring的官网有这个介绍:现代化的java开发!说白就是基于Spring的开发!

  • Spring Boot

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

因为现在大多数公司都在使用SpringBoot进行快速开发,学习SpringBoot的前提,需要完全掌握Spring以及SpringMVC!承上启下的作用!

弊端:发展了太久之后,违背了原来的理念!配置十分繁琐,人称“ 配置地狱!”

2、IOC理论推导


  1. UserDao接口

    package com.jan.dao;
    
    public interface UserDao {
    void getUser();
    }
  2. UserDaoImpl实现类

    package com.jan.dao;
    
    public class UserDaoImpl implements UserDao{
    
        public void getUser() {
    System.out.println("默认获取用户的数据!");
    }
    }
  3. UserService 业务接口

    package com.jan.dao.service;
    
    public interface UserService {
    void getUser();
    }
  4. UserService Impl 业务实现类

    package com.jan.dao.service;
    
    import com.jan.dao.UserDao;
    import com.jan.dao.UserDaoImpl;
    import com.jan.dao.UserDaoMysqlImpl;
    import com.jan.dao.UserDaoOracleImpl; public class UserServiceImpl implements UserService{ //增加了 UserDaoMysqlImpl 类,就必须来改变 UserServiceImpl 类 里面的源代码,
    //如是很多类不得累死?解决的办法?
    //private UserDao userDao = new UserDaoImpl();//对象写死了
    // private UserDao userDao = new UserDaoMysqlImpl();//对象写死了
    // private UserDao userDao = new UserDaoOracleImpl();//对象写死了 private UserDao userDao; //利用set动态实现值的注入!!
    public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
    } public void getUser() {
    userDao.getUser();
    }
    }
  5. 若是有其他新增加的Impl类

    package com.jan.dao;
    
    public class UserDaoMysqlImpl implements UserDao{
    public void getUser() {
    System.out.println("Mysql获取用户数据!");
    }
    }
  6. MyTest的实现

    import com.jan.dao.UserDaoSqlserverImpl;
    import com.jan.dao.service.UserService;
    import com.jan.dao.service.UserServiceImpl; public class MyTest {
    public static void main(String[] args) { //用户实际调用的是业务层,dao层它们不需要接触!
    UserService userService = new UserServiceImpl(); ((UserServiceImpl) userService).setUserDao(new UserDaoSqlserverImpl()); userService.getUser();
    }
    }

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

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

 private UserDao userDao;

//利用set动态实现值的注入!!
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
  • 之前,程序是主动创建对象!控制权在程序猿手上!

    private UserDao userDao = new 8UserDaoMysqlImpl();//对象写死了
  • 使用set注入后,程序不再具有主动性,而是成了被动的接受对象!

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

Spring简介-IOC的更多相关文章

  1. Unit01: Spring简介 、 Spring容器 、 Spring IOC

    Unit01: Spring简介 . Spring容器 . Spring IOC Spring (1)Spring是什么? Spring是一个开源的用来简化应用开发的框架. (2)Spring的特点? ...

  2. Spring的ioc(DI)复习概念和原理简介

    IOC的好处 ioc或者说di的概念很显然了,反转控制和依赖注入,那本来直接new就行的东西,为什么要搞这么复杂呢?? 开发维护方便,高层设计不用依赖底层的,不然底层一个类改下构造器,高层就全要改,因 ...

  3. 1、Spring简介及IOC入门案例

    一.Spring框架介绍 1.介绍 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务 ...

  4. Java Spring的IoC和AOP的知识点速记

    Spring简介 Spring解决的最核心的问题就是把对象之间的依赖关系转为用配置文件来管理,这个是通过Spring的依赖注入机制实现的. Spring Bean装配 1. IOC的概念以及在Spri ...

  5. Spring框架IOC容器和AOP解析

    主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.S ...

  6. [原创]java WEB学习笔记96:Spring学习---Spring简介及HelloWord

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Spring简介和基础

    Spring介绍 1.什么事Spring? spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. spring的设计模式是单例模式和工厂模式. 2.spring的四大优点 轻量 ...

  8. 【Spring 1】Spring简介

    一.Spring简介 首先,Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开 ...

  9. Spring 实践 -IoC

    Spring 实践 标签: Java与设计模式 Spring简介 Spring是分层的JavaSE/EE Full-Stack轻量级开源框架.以IoC(Inverse of Control 控制反转) ...

  10. Spring框架入门之Spring简介

    一.Spring简介(由Rod Johnson创建的一个开源框架)        Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿 ...

随机推荐

  1. 通过网页下载qq音乐在线听歌曲

    1.输入网址 打开 qq音乐网页版 https://y.qq.com/ 2.搜索喜欢的歌曲 3.播放喜欢的歌曲 4.谷歌浏览器检查代码 5.找到 network栏 搜索 m4a 6.找到相关地址 复制 ...

  2. elementUi - 页面设计规范

    elementUi - 页面设计规范 参考资料 element 字体 Font-family 代码 font-family: "Helvetica Neue",Helvetica, ...

  3. weblogic10.3.1.0安装(windows版)

    转: weblogic10.3.1.0安装(windows版) 安装完成后 配置数据源 然后配置部署项目. myeclipse 配置weblogic

  4. 【SSO单点系列】(1):CAS4.0 之环境的搭建

    [SSO单点系列](1):CAS4.0 环境的搭建 一.概述 今天开始写CAS相关的第一篇文章,这篇文章主要是关于CAS环境的搭配,提供给刚刚接触CAS的一个入门指南,并演示一个CAS的最简单的实例 ...

  5. Java-AES256加密Util

    1 public class AES256Util { 2 3 /** 4 * 密钥, 256位32个字节 5 */ 6 public static final String DEFAULT_SECR ...

  6. A Super Hero

    DP? QwQ这题似乎不能直接贪心2333-- 阶段 很明显的阶段性,\(n\)关便为\(n\)个阶段, 状态 分好阶段后,容易构造出状态的表达: \(f[i,j]\)表示Ma5termind在最开始 ...

  7. spring boot2.3.0集成 thymelaf

    配置pom 如果是2.x的直接配置一个starter即可  <!-- ThymeLeaf 依赖 --><dependency>  <groupId>org.spri ...

  8. c++ 保存txt文件

    #include <iostream> #include <stdio.h> #include <fstream> #include <queue> # ...

  9. 如何在Windows 10上使用VS2019 编译C

    一.安装VS 2019 首先VS官网上下载免费的VS2019 community.我们的目的是在Windows上使用该软件编译C,如下图所示,把使用C++的桌面开发打上勾 二.创建.C 项目 1.打开 ...

  10. curl post请求body体内传参数

    1. 传参格式 json function post_http($array='',$url) { $ch = curl_init(); $header = array('Content-Type: ...