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. navicat 远程连接不上mysql

    1 查看是否开启远程连接(拿root用户举例) use mysql; select host, user from user; 以上便是开启远程连接,如果依旧不能连接,参考如下: grant all ...

  2. iOS开发之时间格式化

    //返回当前时间,以GMT为准 NSDate * date = [NSDate date]; NSLog(@"%@", date); //显示当前时间距离1970-01-01 00 ...

  3. python import导入失败 相对路径 绝对路径

    首先我们有这样一个目录结构 经过我无数次的调试,我发现从test3调用spider以及downloadss文件可以直接import调用 但是从外部的app.py文件调用,spider.py文件死活调用 ...

  4. [485] C2 Age Of Splendor Update 1 OpCodez

    [485] C2 Age Of Splendor Update 1 Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03  ...

  5. 解决通过Eclipse启动Tomcat-Run On Server出现The selection cannot be run on any server

    有时候通过Eclipse启动Tomcat-Run On Server会出现The selection cannot be run on any server的情况如下图: 这是因为没有在eclipse ...

  6. noi 1.5 36 计算多项式的值

    描述 假定多项式的形式为xn+xn-1+-+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值. 输入 输入仅一行,包括x和n,用单个空格隔开.x在float范围内,n < ...

  7. 训练题——OLED部分

    训练题OLED部分 实现目标 通过IIC通信控制OLED屏幕显示出一串字符串 名词介绍 OLED屏: OLED(Organic Light-Emitting Diode),又称为有机电激光显示.有机发 ...

  8. vue后台管理系统——权限管理模块

    电商后台管理系统的功能--权限管理模块 1. 权限管理业务分析 通过权限管理模块控制不同的用户可以进行哪些操作,具体可以通过角色的方式进行控制,即每个用户分配一个特定的角色,角色包括不同的功能权限. ...

  9. Linux软件防火墙iptables

    Netfilter组件 内核空间,集成在linux内核中 官网文档:https://netfilter.org/documentation/ 扩展各种网络服务的结构化底层框架 内核中选取五个位置放了五 ...

  10. centOS6设置网络

    一.配置网络模式为桥接模式 1.点击"编辑"->"虚拟网络编辑器" 2.配置NAT 3.配置DHCP 二.进入centos系统设置网络 [root@loc ...