SPING 介绍web
sping 是覆盖整个三层框架数据库
做用:负责管理项目中的全部对象,apache
sing 看做项目中的管家。编程
sping 一站式框架,由于他是整个项目对象的容器,就是一个容器。数组
由于他在 sping 中管理全部的对象,所以能够处理不一样的请求;也由于如此里面装着能够操做session
数据库的对象。架构
容器中装着什么对象就有什么功能。app
能够很清晰的将对象的关系理清,三层架构。框架
sping 的核心是控制反转(Ioc)和面向切面(Aop)。模块化
sping 是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。
SPING的优势:
方便解耦,简化开发
Sping 就是一个大工厂,能够将全部对象建立和依赖关系维护,交给Sping管理
AOP编程的支持。
Sping 提供面向切面的编程,能够方便的实现对程序进行权限拦截,运行监控等功能声明事务
的支持
只须要经过配置就能够完成对事务的管理,而无需手动编程
方便程序的测试
Sping 对junit4支持,能够经过过注解方便的测试Sping 程序
方便集成各类优秀的框架
Sping 不排斥其余框架,还能帮其余框架管理对象。
aop支持 ioc思想 sping jdbc aop 事务 juint 测试支持
SPING 框架的搭建
1.导包
模块图:
最下排中红框中的包就是咱们使用Sping 要导入的最最基础的jar包
同时导入日志包 使用apache的jar包
左上层的五个包是有关dao层的jar包
右上角的四个jar包是有关于web层的包
2.建立一个对象
一个CLASS类,一个简单的Java Bean文件
3.书写配置注册对象到容器。
sping 配置文件规则----就是没有规则,可是建议注意业内规范,通常用applicationContext.xml
同时位置任意可是建议放在src文件之下。
导入约束:
导入约束后,将User对象交给sping容器管理
用<bean></bean>来导入
导入成功的界面。
4.代码测试。
新建一个测试类,放入包下。
测试过程
1)建立容器对象。
2)向容器要“user”对象
3) 打印user对象
IOC 反转控制:
将咱们建立的对象方式反转了
之前对象的建立是由咱们开发人员本身维护,包括依赖关系也是本身注入。使用sping 以后,对象的建立以及依赖关系能够由sping 完成建立以及注入。反转控制就是反转了对象的建立方式,从咱们本身建立反转给了程序(sping)。
DI:依赖注入:(一种技术)
实现IOC思想须要DI作技术支持
注入方式:
set方法注入
构造方法注入
字段注入
注入类型:
值类型注入:八大基本数据类型
引用类型注入:将依赖的对象注入
application Context&Beanfactory(接口)
Beanfactory:接口(原始接口,实现功能较为单一)
特色:接口实现类的容器。特色是每次在得到对象时才会建立对象。
继承关系图:
applicationContext :
特色:每次容器启动时就会建立容器中配置的全部对提供了更多功能。
从类路径下加载配置文件ClassPathXmlApplicationContext
从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext.
结论: 在web开发中,使用applicationContext.在资源匮乏环境中可使用BeanFactory。
三:学习配置文件:
sping 配置详解--
1.Bean元素:
该元素描述须要sping容器管理的对象
name属性:给被管理的对象起个名字,得到对象是根据该名称得到对象。(可使用特殊字符能够重复)
class属性:被管理对象的完整类名。
id属性:与name属性如出一辙。规范:名称不可重复,不能使用特殊字符。
结论:尽可能使用name属性。
2.sping 配置详解。
三种对象建立方式。
建立方式一:空参构造建立方式
如下两种建立方式了解
建立方式二:静态工厂方式。
建立方式三:动态示例工厂建立user
3.sping 配置详解-scope属性:
在bean元素中加的scope属性。
四个取值:
1)singleton:(默认值)单例对象。绝大多数时都会使用单例的。
被标识为 单例的对象在sping 容器中只会存在一个实例
2)prototype:多例原型,被标识为多例的对象每次在得到时才会建立,每次建立都是新的对象
在于与struts框架整合的时候,action对象要交给sping来管理,这是action要配置为多例。
如下两种了解:
3)request:在web环境下,与request的生命周期一致。
4)session:在web环境下,与session的生命周期一致。
4.sping 配置详解,初始化&销毁方法。
生命周期属性(了解)
配置一个方法做为生命周期初始化方法,sping会在对象建立以后当即调用。
init-method destory-method
配置一个方法做为生命周期的销毁方法,sping容器再关闭并销毁全部容器中的对象以前调用5.
5.模块化配置:
sping的分模块配置。在主配置文件中,引入其余配置用的元素为import导入其余sping配置文件
6.sping属性注入:(set方式)(构造函数注入)(p名称空间注入)(spel注入)
set 方式注入:
ref属性制定哪个对象注入
2)构造函数注入:
再用构造函数方式注入时,有了name,type,index能够指定到任何一个构造函数。
当有多个构造函数符合要求时。
用name属性能够指定构造函数的名称。
用index属性能够指定构造函数的顺序。
用type 属性能够指定构造函数的类型。
P名称空间注入:首先要导入P名称空间
7.复杂类型注入:
1)数组类型注入:
注意:若是数组中只准备注入一个值(对象),直接使用 value/ref便可
其余复杂类型注入中,在多个数值注入时,在property元素下加入要注入的类型元素便可,例如:
在array类型注入中,在property元素下,加入array元素,在array元素中进行赋值。便可获得所想注入的值。
注意,其中map类型的为键值对,因此在注入时可使用entry元素来进行注入,