一 Spring概述及IOC理论推导

一 Spring概述及IOC理论推导,第1张

Spring概述及IOC理论推导
  • Spring概述及IOC理论推导
    • 1.Spring
      • 1.1简介
      • 1.2 优点
      • 1.3 组成
    • 2. IOC(Inversion of Control)理论推导(思想)
    • 3.IOC本质

Spring概述及IOC理论推导 1.Spring 1.1简介
  • Spring框架是一个开放源代码的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。

  • Spring理念:使现有技术更加容易使用,本身是一个大杂烩

  • SSM:SpringMVC+Spring+Mybatis!

​ 官网

​ Github下载地址

<dependencies>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>5.2.0.RELEASEversion>
    dependency>
dependencies>
1.2 优点
  • Spring是一个开源的免费的框架(容器)。

  • Spring是一个轻量级的,非入侵式的框架。

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

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

总之:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架

1.3 组成

2. IOC(Inversion of Control)理论推导(思想)
  1. UserDao接口

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

    public class UserDaoOracleImpl implements UserService {
    
        @Override
        public void getUser() {
            System.out.println("Oracle获取用户数据");
        }
    }
    
    public class UserDaoMySqlImpl implements UserService {
        @Override
        public void getUser() {
            System.out.println("Mysql获取用户数据");
        }
    }
    
  3. UserService业务接口

    public interface UserService {
         void getUser();
    }
    
  4. UserServiceImpl业务实现类

    //业务层就是去调用dao层去数据库查
    public class UserServiceImpl implements UserService {
       // private UserDao userDao=new userDaoImpl;这时候需要改变程序去应对客户需求
        private UserDao userDao;
        //需要程序不动客户端去做些事情,把主动权交到用户手上
        //利用set进行动态实现值的注入!想用什么就调用该方法让用户选择
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        @Override
        public void getUser() {
            userDao.getUser();
        }
    
    }
    
  5. MyTest

    public class MyTest {
        public static void main(String[] args) {
            //用户实际调用的是业务层,dao层她们不需要接触
            UserService userService = new UserServiceImpl();
            //这里就是利用set注入实现动态代理的效果
           ((UserServiceImpl) userService).setUserDao( new UserDaoOracleImpl());
       		//调用Orale
             userService.getUser();
    }
    
  • 之前,程序是主动创造对象!控制权在程序员手上!

  • 使用set注入后,程序不在具有主动性,而是变成了被动的接受对象!

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

3.IOC本质

控制反转IOC(Inversion of control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法。

未使用IOC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全编码的在程序中,对象的创建由程序自己控制,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

控制反转后将对象的创建转移给第三方。

  • 控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的.
  • 反转:程序本身不创建对象,而变成被动的接收对象.
  • 依赖注入:就是利用set方法来进行注入的.
    • IOC是一-种编程思想 ,由主动的编程变成被动的接收.
    • 现在要实现不同的 *** 作,只需要在xml配置文件中进行!
    • 修改,所谓的IOC:对象由Spring来创建,管理,装配!

要实现不同的 *** 作,只需要在xml配置文件中进行修改对象由Spring来创建,管理,装配!

IOC是Spring框架的核心内容,使用多种方式完美的实现了IOC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IOC(自动装配)。

Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从Ioc容器中取出需要的对象。

采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

控制反转是通过一种描述(XML或注解)并通过第三方生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,它的实现方法是依赖注入(Dependency Injection,DI)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/734877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存