Sping笔记一览

Sping 介绍

sping 是覆盖整个三层框架

作用:负责管理项目中的所有对象,

sping 看作项目中的管家。

sping 一站式框架,因为他是整个项目对象的容器,就是一个容器。

因为他在 sping 中管理所有的对象,因此可以处理不同的请求;也因为如此里面装着可以操作

数据库的对象。

容器中装着什么对象就有什么功能。

可以很清晰的将对象的关系理清,三层架构。

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元素来进行注入,

原文地址:https://www.cnblogs.com/shuai9999/p/9551600.html