初学Spring之 IOC 控制反转

发布于:2024-07-04 ⋅ 阅读:(44) ⋅ 点赞:(0)

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

导入 jar 包:spring-webmvc、spring-jdbc

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

SpringBoot:(构建)

1.一个快速开发的脚手架

2.基于 SpringBoot 可以快速开发单个微服务

3.约定大于配置

SpringCloud:(协调)

SpringCloud 是基于 SpringBoot 实现的

dao 层即 Data Access Object

service 层即业务层,在业务层调用 dao 层

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

写个测试类调用 set 方法

用户实际调用的是业务层,dao 层用户不需要接触(程序在 dao 层修改)

即不通过直接访问 dao 层,通过 service 层作为桥梁来调用

UserServiceImpl 类代码:

package com.demo.service;
import com.demo.dao.UserDao;

public class UserServiceImpl implements UserService{

    private UserDao userDao;

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

    @Override
    public void getUser() {
        userDao.getUser(); //业务层调dao层
    }
}

MyTest 类代码:

import com.demo.dao.UserDaoMysqlImpl;
import com.demo.service.UserService;
import com.demo.service.UserServiceImpl;

public class MyTest {
    public static void main(String[] args) {

        /*
        用户实际调用的是业务层,dao层不需要接触
        即不通过直接访问dao层,通过service作为桥梁来调用
         */
        UserService userService = new UserServiceImpl();

        ((UserServiceImpl)userService).setUserDao(new UserDaoMysqlImpl());
        userService.getUser();

    }
}

IOC 控制反转(Inversion of Control),获得依赖对象的方式反转,即把选择权交给用户,其实现方式是依赖注入(Dependency Injection,DI)

(如果不是这种设计思想,主动权在业务层,

private UserDao userDao = new UserDaoImpl(); 每次都要 new 新的 dao 层类,不适用)


网站公告

今日签到

点亮在社区的每一天
去签到