spring 容器(控制反转及依赖注入)
spring:是一个容器,项目开始就一直在运行; spring--加载进内存里面 容器中有监听器 引入容器,而struts注重运行时; 核心类中监听器...监听启动后可以从context(上下文即spring所有的配置)中获取内容,将核心配置文件(applicatinContext.xml)交给spring容器) 1.实例化 sp...
spring:是一个容器,项目开始就一直在运行;
spring--加载进内存里面 容器中有监听器 引入容器,而struts注重运行时;
核心类中监听器...监听启动后可以从context(上下文即spring所有的配置)中获取内容,将核心配置文件(applicatinContext.xml)交给spring容器)
1.实例化 spring IOC容器(让他通过构造器实例化类) 的方法:
2.实例化bean 的方法:
1.构造器实现: 在applicationContext.xml 中构造一个 bean(class) ,spring 容器就可以读到该bean.可以利用该class所指向的类的构造函数来实例化(即实例化该bean,生成实例)
2.静态工厂实例化:实例化的是该方法返回的内容,而不是该类的实例;
(容易产生单例)配置bean(相当于完成了new 实例和用实例调用方法)--通过方法返回实例 逆向思维
3.实例化工厂(非静态的工厂实例化)不断输出各种实例;
3.IOC:控制反转
<1>.将new 实例的过程交给spring ,即将对实例的控制权交给spring(主要让他管理这些bean--定义一次实例 ,随时都能用) 我不用再管new的过程 只管用容器已经创建的实例就好;
<2>. 怎么用new 的实例:即bean的操作(getBean() 机制--控制反转);
spring 通过上下文拿到你的bean (一个一个的对象,即源码中的类)对象---调用属性;
4.DI:依赖注入
本类引入其他类 (但是不用new 将已有(bean /属性)的注入给你 )如:将Student 依赖进 User (用User 创建一个student对象就可以了,student相当于User 类的一个成员属性)
依赖注入的方法:
1.构造器注入:
构造函数的参数对象类型(User 类中定义一个student对象,User 类相当于多了一个属性 ,加 get()/set() 方法)
2.setter注入:<property></property>标签 value注入属性值
<1>. ref--引入其他bean 的 name属性值,,,value:对直接变量和基本类型等可以直接赋值,不能对对象赋值;
<2>. idef(该bean 是否存在)、 local(该bean 是否与引入它的bean存在同一配置文件中).xml解析器对引入的bean 进行安全验证,提前发现错误;ref 只是引入,在请求时才会找该bean 的信息
<3>.父容器:<ref parent=""></ref>
4.内部bean:(idef 可引入)
5.bean 的作用域:
创建一个bean 的实质是用该bean 定义的类来创建真实实例的“配方”(定义一个你要创建什么东西)。与class 类似,根据一张“处方“就可以创建多个实例--反射原理; 这样,不仅可以控制 注入带对象的依赖和配置值,也可以控制选择对象的作用域。不必在java class级别(public/private....)定义作用域
ps:spring框架很强大,我们需要了解其底层原理 才能更好的使用它!
更多推荐
所有评论(0)