首页 > 其他分享 >spring理解控制反转

spring理解控制反转

时间:2022-09-21 10:22:54浏览次数:61  
标签:UserDao 创建 spring void dao 理解 反转 public

理解控制反转

1、创建一个dao层

  • 创建一个UserDao接口
package dao;
//dao层是调用数据库的
public interface UserDao {
    void getUserDao();
}

  • 创建一个UserDao的实现类UserDaoImpl
package dao;

public class UserDaoImpl implements UserDao{
    public void getUserDao() {
        System.out.println("获取UserDao");
    }
}

  • 创建一个UserDao的实现类UserDaoLinux
package dao;

public class UserDaoLinux implements UserDao{
    public void getUserDao() {
        System.out.println("获取UserDaoLinux");
    }
}

  • 创建一个UserDao的实现类UserDaoLinux
package dao;

public class UserDaoLinux implements UserDao{
    public void getUserDao() {
        System.out.println("获取UserDaoLinux");
    }
}

  • 创建一个UserDao的实现类UserDaoMySQL
package dao;

public class UserDaoMysql implements UserDao{
    public void getUserDao() {
        System.out.println("获取UserDaoMysql");
    }
}

2、创建service层

  • 创建UserService接口
package service;
//service是做业务处理的
public interface UserService {
    void getUserService();
}

  • 创建UserService接口的实现类UserServiceImpl
package service;

import dao.UserDao;
import dao.UserDaoImpl;

public class UserServiceImpl implements UserService{
    //业务需要调用接口
    private UserDao userDao;

    //利用set注入的方法,实现动态值的植入
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void getUserService() {
        userDao.getUserDao();
    }
}

3、创建一个测试类

import dao.UserDaoLinux;
import service.UserServiceImpl;

public class Test {
    public static void main(String[] args) {
        UserServiceImpl userService = new UserServiceImpl();
        userService.setUserDao(new UserDaoLinux());
        userService.getUserService();
    }
}

控制反转再理解

  • IOC是什么
    Spring的IOC意思为控制反转,它不是什么技术,而是一种设计思想。它是将你设计好的对象交给Spring容器来控制,而不是由我来管理对象,给它赋值等等。

  • 问题一:谁控制谁?控制什么
    传统的面向对象思想对于构造对象最简单的方法无非就是在对象内部通过new对对象进行创建,是程序主动去创建依赖对象。
    但IOC不同,IOC是专门有一个容器来创建、初始化这些对象,这些对象被称为Bean。谁控制谁? 是IOC容器控制住了对象,控 制了什么? 控制了bean的生命周期。

  • 问题二:为何是反转,哪方面反转了
    有反转就有正转,面向对象思想就是有我们在自己的对象中主动控制去直接获取依赖对象,这就是正转。而反转就是由Spring容器来创建及注入依赖对象。为何是反转? 因为有容器来自动的帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转。哪方面反转了? 依赖对象的获取被反转了。

标签:UserDao,创建,spring,void,dao,理解,反转,public
From: https://www.cnblogs.com/lovesz/p/16714671.html

相关文章

  • spring的依赖注入
    依赖注入1、依赖:指bean对象创建于容器,bean对象创建依赖于资源2、注入:指bean对象所依赖的资源,由容器来设置和装配构造器注入set注入DI依赖注入​IOC的一个重点......
  • Spring Boot - Undertow容器启动
    Undertow简介Undertow是红帽公司开发的一款基于NIO的高性能Web嵌入式服务器Untertow的特点:轻量级:它是一个Web服务器,但不像传统的Web服务器有容器概念,它由两......
  • springboot逆向工程
    通过逆向工程少写很多代码generatorConfig.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBati......
  • Spring Boot 两种部署到服务器的方式
    jar包(官方推荐)jar包方式启动,也就是使用springboot内置的tomcat运行。服务器上面只要你配置了jdk1.8及以上,就ok。不需要外置tomcat1.打成jar包2.将jar包放到任意目录......
  • 关于js闭包的基础理解
    闭包拿一个可以记录函数调用次数的来进行理解,如下方letn=0functionnumUp(){n++console.log(n)}constfn=numUp()fn()//n=1fn()......
  • 微服务网关 Spring Cloud Gateway
    什么是网关假设你现在要做一个电商应用,前端是移动端的APP,后端是各种微服务。那你可能某个页面需要调用多个服务的数据来展示。如果没有网关,你的系统看起来就是这个样子的:......
  • SpringIOC的理解
    IOC(InversionOfControl):控制反转控制:即对资源(如一个Java类)的获取方式获取方式可以分为两种主动获取在Spring之前我们想要获取一个类都是自己创建,即new出这个类......
  • Spring-01:初学资源准备及初始化spring项目
    1资源准备在学习Spring框架前,你需要先准备好相应的学习资源,以帮助更好地掌握基础知识,快速解决过程中遇到的问题。①spring官方文档https://spring.io/这里你可以快速......
  • 一对多,多对一,多对多的理解
    对一是对象对多是集合一个班级下可以有多名学生  班级一对多名学生一个学生只能有一个班级,一个学生不能有多个班级,所以这里是一对多  班级一对多名学生而多对......
  • SpringMVC学习笔记(五)
    注解配置MVC使用配置类和注解联合使用的方式代替xml配置文件 在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找......