spring的原理

    xiaoxiao2021-04-14  65

    spring这个经典框架相信大家已非常熟悉,这是自己整理的一些关于spring的笔记和大家分享一下 一.spring的概述 1.对象依赖问题 a、创建对象的时候,new一个对象 b、spring的工厂来创建和管理对象,这个工厂的主要目标就是生产对象。工厂怎么配置就产生什么样的对象。 工厂里面根据反射生成相应的对象 获取工厂, 然后向工厂获得相应的对象, 调用从工厂中后获得的对象的相关方法 所以工厂中要配置很多的相应信息,工厂的配置很麻烦.(单例和多例) 编写xml文件,解析xml文件,通过反射将bean节点中的值读取出来,放到属性中去,生成相应的对象 c、自定义spring 不光是spring其他的框架也是 配置文件加反射 d。路德·约翰森 spring之父 包容,包装,整合其他的技术和框架,编程也一种艺术 Expert one-to-one Designer and Development,挑战传统的EJB e。学习spring主要学习的是IOC、AOP、DI、声明式事务 f。轮子理论,现有的技术,如果已经很成功了,那么我们直接包容他,拿过来用就行了。 如果轮胎坏了,直接买一个新的就行了,没必要直接去制造轮胎 2.现有技术的整合问题 3.同时彻底解决了事务方面的问题 4.spring的思想是一种包容的思想,什么东西好,就把什么东西包容进来. 二.spring开发的jar包 a。spring的 beans jar包 b。core 核心 c。context 语境,上下文,环境,背景 d。expression 表示,表现,表达 e。commons-logging 用来记录程序运行时的活动的日志记录。 三.spring的快速入门 1.导入jar包 2.写spring的配置文件 xml文件 applicationContext.xml 3.spring的 schema约束 4. 读取配置文件,反射,得到对象,给对象赋值 (spring做的事情) 5.程序员做的事情 获取工厂,向工厂申请一些对象,在调用从工厂获取的相关对象的方法 6. a.加载配置文件的到一个对象 ApplicationContext ac = new ClassPathApplicationContext("applicationContext.xml"); b.从工厂中获取对象 Customer c = (Customer)ac.getBean("customer"); c.使用从工厂中获取的对象(调用方法,调用属性) 四.spring的工作原理 1.创建配置文件, 2.编写配置文件(加入一些对象的配置的信息) 3.spring本身就是一个工厂( 五.创建对象的三种方式 1.调用空参的构造方法 2.调用静态公厂 3.调用实例工厂 先产生历实例工厂的对象, InstanceFactory tomcat启动的时候,配置文件中的所有对象,spring让所有的对象都创建了,用的时候直接取出已经创建的对象就行了. 对象的创建是在配置文件加载时,就会生成配置的对象.在spring容器加载时,内部所配置的bean对象都会进行实例化. 六.对象注值的常用方式 spring默认的是单例的 ApplicationContext 通过getBean()方法,获得xml文件里面配置的对象 1.通过setter方法注值, 2.使用构造方法,实现属性的注值(一定要有有参的构造方法) 3.p名称空间注值 ,在约束中加入p名称标签, <bean id class p:属性和值 p:属性和值> 内部的本质是:调用了setter方法 注入对象:property 中注入一个对象,使用ref 将这个对象的id放入就行了 构造器注值, p名称空间注值需要在属性后面加-ref. 七.对象的生命周期 1.当spring配置文件加载时,就会完成配置文件中的对象的实例化 2. 实例化,初始化,销毁 创建的时候,实例化了,创建一个该对象的实例 在bean中增加 init-method destroy-method ClassPathXmlApplicationContext 对象能被关闭 八.对象的作用域 1.作用域:指对象的作用范围 2.单例: spring默认是单例的 scope="singleton" ,在spring IOC容器中仅存在一个bean实例,即bean以单例的方式存在 多实例scope="prototype",每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean() 判断单实例还是多实例, 打印对象的地址值或者使用== Struts2的action必须配置成多实例的,如果不配置成多实例就会出现线程安全问题 scope="prototype" 九.spring与web项目集成 1.用于加载spring配置文件的一个监听器 listener 2.指明spring配置文件的所在的位置 3. 十.spring与struts2项目的集成 十一.spring的注解式开发 spring回顾 1.主要解决了对象依赖相关问题,整合现有流行技术,还可以解决事务问题. 2.IOC 控制反转 就是将早期直接new对象的控制权交给spring容器,交给工工厂来完成。相当于工厂得到了对象的控制权,而程序代码,不在创建对象,而是直接获取对象。 3.DI是什么? 依赖注入,将对象之间的关系交给spring来维护 4.体系结构 核心容器:beans,core,context,expression,commons-logging 5.快速入门 1.导入jar包 2.编写applicationContext.xml 3.配置一些bean节点 4.测试 ApplicationContext容器 ,它是一个接口,它的实现类ClassPathXmlApplicationContext 6.执行原理 xml解析+反射+工厂模式 7.对象创建的三种方式 1.构造器无参 2.静态工厂 3.实例工厂 8.注值 1.setter方法注值 注对象一个已经定义好的对象 ref 注入普通的值 value 2.有参的构造方法 3.p名称标签 4.spEL注值 语法#{} 9.对象的生命周期 在spring配置文件加载时,就会实现对象的实例化 然后执行init 在容器关闭的时候就会执行destory方法 10.对象的作用域 scope属性 单例 多例:在与Struts2集成时,action必须配置成多实例 11.spring与web项目的集成 spring-web-xxx 的jar包 配置 web.xml文件,让spring的配置文件只加载一次 <listener> <listener-class>包名.ContextLoaderListener<listener-class> 他默认加载的是/WEB-INF/ApplicationContent.xml文件
    转载请注明原文地址: https://ju.6miu.com/read-669889.html

    最新回复(0)