Spring
认识spring
spring框架减轻了对项目模块间,类与类之间的管理难度,帮助开发人员创建对象,管理对象间的关系,实现模块间,类之间的解耦合
(依赖:若classA使用了classB的属性和方法,叫做类A依赖B)
官网:https://spring.io/projects/spring-framework
体系结构:
前言:
学习框架,首先要知道:所谓框架,其实就是一个别人写好的软件,我们要做的是
-
知道框架能做什么,例如mybatis -- 访问数据库,对表中数据进行增删改查
-
学习框架语法,知道框架通过哪些步骤完成一个功能
-
有了以上运用基础后再去认识框架的内部实现原理,进而实现一个框架
现在正式开始进入Spring的学习:
Ioc控制反转(Inversion of Control)
概念
Ioc是一种思想,描述的是:把对象的创建,赋值,管理工作交给代码外的容器实现,也就是对象的创建是由其他外部资源完成
控制是指:创建对象,对象的属性赋值,对象间的关系管理
解释反转之前,先介绍其相反概念:开发人员在代码中使用new构造方法创建对象,开发人员主动管理对象,这种方式可以理解为正转,那么就不难理解所谓
反转即是:将原来的开发人员管理创建对象的权限交给代码之外的容器实现,由容器代替开发人员管理对象,创建对象,给属性赋值等工作。
这里的容器,就是一个服务器软件,一个框架(spring)
为什么要使用ioc?:目的就是减少对代码的改动,也能实现不同的功能,实现解耦合。
现在想一下 Java中创建对象有哪些方式?
-
构造方法new
-
反射
-
序列化
-
克隆
-
动态代理
-
ioc:容器创建对象
ioc的体现
以servlet为例 :
-
创建类继承HttpServlet
-
在web.xml 注册servlet使用
myservlet com.andy.controller.MyServlet -
注意上面代码中并没有创建Servlet对象的语句:MyServlet myservlet = new MyServlet()
-
其实这里的Servlet就是由Tomcat服务器帮我们创建的,Tomcat就是一个容器,里面存放着Servlet对象,Listener,Filter等
IoC的技术实现:DI
DI(Dependency Injeciton)依赖注入,只需要在程序中提供要使用的对象名称即可,至于对象如何在容器中创建,赋值,查找都有容器内部实现
Spring使用DI实现了Ioc的功能,底层创建对象使用的是反射机制
例子:在idea中使用spring创建对象
配置beans文件
测试
详细源码见https://github.com/GigoGigo-CH/Learn_Spring/tree/master/ch01-hello-spring