栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring--简介

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring--简介

Spring--简介
  • Spring
    • 1.1 Spring简介
    • 1.2 Spring优点
  • IOC理论推导
    • 1.1 maven导入相关依赖
    • 1.2 聊一下最开始写业务的顺序

Spring 1.1 Spring简介
  • spring:春天,给整个java开发带来了春天
  • 2002,Spring首次推出了Spring框架的雏形:interface21
  • Rod Johnson,他是Spring创始人
  • Spring:说白了,就是一个大杂烩,整合了现有的技术框架
1.2 Spring优点
  • Spring是一个免费的框架
  • Spring是一个轻量级的,非入侵式的框架
  • 控制反转(IOC),面向切面编程(AOP)
  • 支持事务的处理,对整合的框架支持
IOC理论推导

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

1.1 maven导入相关依赖
        
            org.springframework
            spring-webmvc
            5.3.14
        `

为什么选择webmvc,因为它包含的依赖包比较全面浪;

1.2 聊一下最开始写业务的顺序
  1. 先写Dao层接口
package com.j.dao;


public interface BookDao {
    
    void getBook();
}
  1. 在写Dao的实现类
package com.j.dao;


public class BookDaoImpl implements BookDao {
    
    @Override
    public void getBook() {
        System.out.println("获取默认书籍!!!");
    }
}

3.然后在写Service

package com.j.service;


public interface BookService {
    
    void getBook();
}

  1. 在写一下service实现类
package com.j.service;

import com.j.dao.BookDao;
import com.j.dao.BookDaoImpl;


public class BookServiceImpl implements BookService {
    //引入Dao层
    BookDao bookDao = new BookDaoImpl();
    
    @Override
    public void getBook() {
        bookDao.getBook();
    }
}

接下来在写一下测试类

import com.j.service.BookService;
import com.j.service.BookServiceImpl;


public class noIoc {
    public static void main(String[] args) {
        BookService bookService = new BookServiceImpl();
        bookService.getBook();
    }
}

输出结果如下:

获取默认书籍!!!

那么在这里,我们就得想一想,如果我们按照最原始的逻辑去编写代码,那么在这个编写过程中会是否会遇到以下这个问题。

  1. 当客户提出我不要固定书籍了,我要从Mysql数据库里面输出,那么我们就得修改Dao层数据实现类,如下所示
	//修改Dao实现类
    public void getBook() {
        System.out.println("获取Mysql默认书籍!!!");
    }

输出结果为:

获取Mysql默认书籍!!!

目前为止,我们代码量少,还不会有太大的影响,好像也会觉得改几行代码的事情,可是你要想到,你这个项目会交给git管理,你经常改代码或许造成代码冲突,这个时候那就美滋滋了 这是其一。其二,你如果在面对客户的时候需求的改变量是巨大的,这是没有办法避免的事情,甲方爸爸不是白叫的,你修改代码将会导致团队开发中陆陆续续出现各种小问题。

  1. 既然发现了问题所在,那么来看解决方法,我们使用一个set方法实现动态值的注入,如下:
package com.j.service;

import com.j.dao.BookDao;


public class BookServiceImpl implements BookService {
    //引入Dao层
    public BookDao bookDao;
	//在这里编写set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    
    @Override
    public void getBook() {
        bookDao.getBook();
    }
}

看完上述代码,或许不难发现,本次修改使用set接口实现,从代码本质上发生了革命性的变化。原因有如下俩点:

  • 最开始,程序是主动创建对象!控制权在程序员的手上。
  • 使用了set注入之后,程序就变成了被动的接受对象了。

这种思想,从本质上解决了问题,我们基本上不用在去管理对象的创建了,系统的耦合性大大的降低。这种思想贯穿了IOC,也可称之为IOC的原型。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696721.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号