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. linux开机启动执行脚本或命令

    添加到    /etc/rc.d/rc.local    给文件执行权限   /etc/rc.d/rc.local 用于用户自定义开机启动程序,可以往里写开机要执行的命令或脚本,线上的配置如下: [r ...

  2. [iOS] 对 UItableView 等界面(ClipsToBounds) 同时使用 圆角和阴影

    展示内容的界面会被 ClipsToBounds = YES(按边缘剪切),但同时需要圆角和阴影效果. 一个界面,ClipsToBounds = YES 之后,阴影会被剪切,不再展示. 感觉只能使用多个 ...

  3. windows快捷键, 基本dos命令

    Ctrl+C 复制Ctrl+V 粘贴Ctrl+A 全选Ctrl+X 剪切Ctrl+S 保存Alt+F4 关闭窗口shift+delete 永久删除Window+R 打开运行cmd 打开命令行窗口Win ...

  4. 杭电OJ--1014

    问题描述: 计算机模拟通常需要随机数.生成伪随机数的一种方法是通过窗体的函数seed(x+1) = [种子 (x) + STEP]% MOD其中 "%" 是模量运算符.这样的函数将 ...

  5. 招新题流程简介(WS2812)

    22物电科协软件招新题学习流程 有错误或者不当的地方请在评论区指出 题目简介 使用stm32驱动单一ws2812b灯珠实现呼吸灯效果,驱动及实现方法不限 演示效果 快速入门,在stm32核心板上点灯 ...

  6. 样式优先级的规则:!important`>行内样式>嵌入样式>外链样式>id选择器>类选择器>标签选择器>复合选择器>通配符>继承样式

    CSS样式的优先级应该分成四大类 第一类`!important`,无论引入方式是什么,选择器是什么,它的优先级都是最高的. 第二类引入方式,行内样式的优先级要高于嵌入和外链,嵌入和外链如果使用的选择器 ...

  7. nuxt,js中关于服务端不能使用localStorage和cookie的解决方案

    参考链接:https://www.npmjs.com/package/cookie-universal-nuxt 1.安装下载 npm i --save cookie-universal-nuxt 2 ...

  8. javaweb链接到数据库(mysql)操作

    准备:配置好数据库,下好mysql connect 第一步:将my connec文件和commons-dbutil(,jar)复制到webapp文件下WEB-INF的lib文件中,然后右键构建路径. ...

  9. 第8章 使用标记帮助工具构建表单(ASP.NET Core in Action, 2nd Edition)

    本章包括 使用Tag Helpers轻松构建表单 使用锚标记帮助程序生成URL 使用Tag Helpers为Razor添加功能 在第7章中,您了解了Razor模板以及如何使用它们为应用程序生成视图.通 ...

  10. mybatis核心配置文件

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...