spring 是一个开源的框架,是一个轻量级控制反转(Ioc)和面向切面(AOP)的容器框架
从大小和开销两个方面而言 spring 是轻量的。
Ioc 达到松耦合
包含和管理对象的配置和生命周期 ,这个意义上是一周容器
将简单的组件组合成为复杂的应用,这是意义上的框架
应用简单 ,方便,快捷
spring 带来了 javaEE 开发的春天
spring 容器 对主流框架提供了良好的支持 AOP 事务管理
框架 是一套规范 使用别人搭好的舞台 我们来做表演
框架一般为了封装了逻辑和高内聚 ‘
为什么使用框架? 系统复杂 。 开发效率 容易上手
java8 接口可以拥有方法题
IOC 控制反转 控制权利 的转移 应用程序本身不负责依赖对象的创建和维护,由外部容器负责
比如 我们买的房子 获得依赖对象的过程被反转了,控制被反转后 获得依赖对象的过程由自身管理变成了
由IOC 自动注入, 他给控制反转取了“控制反转”取了一个更合适的名字加“依赖注入”
实际上实现IOC 的方法是:注入 。
依赖注入:由IOC 容器在运行期间,动态的将某种依赖关系注入到对象中
Di 依赖注入 是一种实现方式
目的 是创建对象并且组装对象的关系;
spring bean的使用 注解和xml配置方式
spring 的注入 指的是 启动spring 容器加载bean配置的时候,完成对变量的赋值
比如 。A 类中 引用B类 完成 对B的赋值 就是注入
注入分为两种方式 :
设定set值注入 和构造注入
无论是set值注入还是构造器注入 都需要xml 进行配置
通过byname 形式 自动装配,就是bean的id ,此选项将检查IOC 容器并根据名字查找与属性完全一致的bean
并与其属性自动装配 IOC 容器启动的时候,会自动加载配置文件
bytype 根据属性名称,如果容器中存在一个与指定属性相同的bean 那么将与该属性自动装配;
如果存在多个该类型的bean,那么将抛出异常,并指出不能通过byType方式进行自动装配;
没有找到相匹配的ban ,则什么都不会发生。
如果自动装配的方式程序代码中可以通getbean来实现,可以减少xml 配置文件的中的代码
Bean 配置项
id bean的唯一标识 两个 bean 的id 一样的 话就会失败
class 实例化哪一个类 必须的要写的
scope 范围 作用域
properties 属性 比如 应用引用另外一个类
其中,<property name="injectionDao" 这个名字指的是类的名字
ref =“injectionDao” 指的是要引用的id 也就是下面的id=“injectionDAO”
autoowiring mode 装配模式
默认是单例模式
Resources 针对于资源文件的统一入口
ResourceLoader 资源加载情况
applicationcontext 类中实现了所有 resourcLoader 的接口