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基础第三章:Linux软件安装及yum本地库创建

    一.Linux软件安装 1.Rpm包安装 2.yum仓库安装 二.yum本地库建立 一.Linux软件安装软件安装共2种安装方式,通过rpm包安装或通过yum仓库库安装. 1.Rpm包安装rpm:Re ...

  2. bootstrap-select使用、relation-graph使用

    bootstrap-select 这里要实现的是带有搜索功能的select框, bootstrap 官网没有可以直接拿来用的.如下是官网给出的解释,带搜索功能的select需要自定义. 在网上找到了有 ...

  3. Python获取本地通达信软件的股票信息(一)

    说明 在量化计算中,经常需要取得类似最新的股票代码表等相关的股票信息.虽然可以网络上可以很容易获得这些信息,但当处于离线或网络状况不佳状态时,我们可以从诸如<通达信金融终端>之类的本地数据 ...

  4. GitLab版本定版

    定版指令: git add -Agit commit -m ""git push origin develops:V5.2

  5. Loadrunner录制时弹出Microsoft Visual C++ Runtime Library解决方案

    这段时间用loadrunner测试工具,录制脚本的时候老是出现这个弹窗,刚开始就以为是软件错误,就用的软件修复,也解决了,后来还是出现这样的错误,修复也没有用 原因:可能是代理服务器在调用VC库的时候 ...

  6. vivado程序示例

    //full_add.v 全加器 module full_add( input a, input b, input carry, output sum, output count ); assign ...

  7. CI框架 between and sql语句

    1.在文档里没有找到关于where() between and 相应的说明 每次组合查询 要么写原生 要么连续调用where方法. 可用以下方式组合 $condition = array(); $co ...

  8. centos7 安装 elasticsearch 7.15

    下载 elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-linu ...

  9. SpringBoot系列---【maven项目引入第三方jar包并打包发布】

    一.问题 项目中经常会碰到这样的问题,我们做的项目依赖别人打好的jar包,这种我们可以有两种途径解决,第一种是上传到私服,再从我们的项目去引入pom坐标,这种适合有私服账号或者自己会搭建私服的,成本有 ...

  10. doy 19 进程管理

    1.进程管理 1.什么是进程,什么是线程​ 1.什么是程序 一般情况下,代码,安装包等全部都是应用程序. 2.什么是进程 应用程序运行起来的能够提供某种服务的实例. 3.什么是线程 进程中处理具体事务 ...