- Spring
- 1.1 Spring简介
- 1.2 Spring优点
- IOC理论推导
- 1.1 maven导入相关依赖
- 1.2 聊一下最开始写业务的顺序
- spring:春天,给整个java开发带来了春天
- 2002,Spring首次推出了Spring框架的雏形:interface21
- Rod Johnson,他是Spring创始人
- Spring:说白了,就是一个大杂烩,整合了现有的技术框架
- Spring是一个免费的框架
- Spring是一个轻量级的,非入侵式的框架
- 控制反转(IOC),面向切面编程(AOP)
- 支持事务的处理,对整合的框架支持
1.1 maven导入相关依赖控制反转是一种通过描述(XML或注解),并通过第三方法生产或者获取特定对象的方式,在Spring中实习控制反转的是IOC容器,实现方法是依赖注入(Dependency Injection ,DI)
` org.springframework spring-webmvc5.3.14
为什么选择webmvc,因为它包含的依赖包比较全面浪;
1.2 聊一下最开始写业务的顺序- 先写Dao层接口
package com.j.dao; public interface BookDao { void getBook(); }
- 在写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(); }
- 在写一下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(); } }
输出结果如下:
获取默认书籍!!!
那么在这里,我们就得想一想,如果我们按照最原始的逻辑去编写代码,那么在这个编写过程中会是否会遇到以下这个问题。
- 当客户提出我不要固定书籍了,我要从Mysql数据库里面输出,那么我们就得修改Dao层数据实现类,如下所示
//修改Dao实现类 public void getBook() { System.out.println("获取Mysql默认书籍!!!"); }
输出结果为:
获取Mysql默认书籍!!!
目前为止,我们代码量少,还不会有太大的影响,好像也会觉得改几行代码的事情,可是你要想到,你这个项目会交给git管理,你经常改代码或许造成代码冲突,这个时候那就美滋滋了 这是其一。其二,你如果在面对客户的时候需求的改变量是巨大的,这是没有办法避免的事情,甲方爸爸不是白叫的,你修改代码将会导致团队开发中陆陆续续出现各种小问题。
- 既然发现了问题所在,那么来看解决方法,我们使用一个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的原型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)