spring是一个轻量级开源j2EE (念 j two ee)框架

轻量级: jar包数量少而且体积比较小    使用spring时可以不依赖其他的组件,自己单独使用

开源: 源码公开 免费

j2EE:java企业级应用

框架: 为解决企业应用开发的复杂性,使得开发更加简洁方便

两个核心的部分: ioc 容器、 aop

ioc : 控制翻转 (di 依赖注入)----解耦合

使用spring容器来管理创建对象的过程

aop:面向切面 

在不修改源代码的情况下,增强程序的功能

除此之外还有 事务 jdbc springmvc

特点:

1、方便解耦、简化开发(ioc)

2、aop编程的支持

3、方便程序的测试(junit 框架的整合)

4、方便和第三方框架整合 (mybatis 、springmvc、hibernate、struts)

5、方便进行事务的操作,降低开发难度,对javaee 的api进行了封装(jdbc jms)

6、源码值得学习

核心jar包(core container)

core   beans(ioc)   expression(表达式)  context(上下文) common-log(日志)

配置文件(xml格式) 和 注解方式 

spring 配置文件: bean 标签  id 和 class属性

 

Ioc底层原理

控制翻转:

目的:降低代码的耦合度

操作:对象的创建和对象之间的调用过程,交给spring进行管理

原理:xml解析、设计模式(工厂模式)、 反射

工厂模式:

目的:解耦合

(耦合度不能没有,实际上只能降低耦合度)

创建工厂类,通过工厂类调用new来创建对象

xml解析:

对xml文件内容获取值或者操作值

常见的方式:dom4j等

反射:

目的:通过得到类的字节码文件(class文件),然后可以操作类中所有内容(java文件-》class文件)

ioc的实现过程(解耦合):

第一步:xml解析

第二步:通过一个工厂类,使用反射 创建对象

反射  class.forName("全路径包名"), .newInstance()

 

Ioc接口(BeanFactory、ApplicationContext)

ioc思想:ioc思想是基于ioc容器完成的,ioc容器底层就是对象工厂

spring提供ioc容器实现有两种方式(加载配置文件获取创建对象):(两种接口)

BeanFactory:ioc容器最基本的实现方式,spring内部使用的接口,一般不在开发中使用

加载配置文件的时候不会创建对象,在获取或者使用对象的时候创建对象

BeanFactory下的子接口(根扩展相关的接口):

ConfigurableApplicationContext

ApplicationContext:BeanFactory的子接口,提供了更多更强大的功能,供开发人员使用

加载配置文件的时候就会创建对象,web项目中,在服务器启动的时候加载耗时间好资源的,而不在执行过程中加载

ApplicationContext主要的实现类:

FileSystemXmlApplicationContext

需要xml文件的绝对路径

ClassPathXmlApplicationContext

需要xml文件的src目录下的路径(相对路径)

 

Ioc操作 bean管理(基于xml文件、基于注解)

bean管理:

spring创建对象

spring注入属性

方式:

基于xml文件

<bean id="" class="" name=""></bean>

name:作用和id一样,name可以加特殊符号(struts1)
默认的是无参的构造方法

ioc(di依赖注入-----注入属性 di是ioc的一种具体实现)

有参构造:

set方法:

<property> name value

基于注解方式

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐