Spring--简介

Spring--简介,第1张

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的原型。

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

原文地址: http://outofmemory.cn/zaji/5696859.html

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

发表评论

登录后才能评论

评论列表(0条)

保存