Spring笔记

  • 格式:docx
  • 大小:23.75 KB
  • 文档页数:12

Spring笔记

unit01

单词释义

IOC: 控制翻转

factory:工厂

scope:指定

lazy:懒惰的

location:位置

properties:键值队

constructor:构造器

arg:自变量

Component:组件

Repository:储存

Service:服务

Example:举例

Spring的核心,是管理对象,对象的生存周期和维护对象之间的关系。

一:java Bean(POJO) 实现如下规则的Java对象

1:必须有包(package)

2:必须有无参构造器。

3:实现序列化接口。

4:有get set方法定义的Bean属性。

String getName()

void setName()

get方法和set方法定义了Bean属性name 与对象的属性不同

比如:EL表达式可以访问Bean属性。

5:toString equals hashCode 有ID基本都重写。

就是有一定约定的java对象。

二:Spring 管理的Java对象 1:Spring创建对象的步骤

Spring可以访问Bean属性。

IOC 控制翻转

1)导入SpringjJar包

2)给Spring一个声明,写一个配置文件。

2:Bean的实例化方式

1)使用配置文件实例化

2)使用静态工厂方法实例化

通过某些类中静态方法而获取的方式

在该方式calss中指向的是提供静态方法的类,后面是要获取对象的静态方法。

3):使用实例工厂方法实例化

三Bean的作用域和生存周期

1:Bean的作用域

在Bean标签中利用scope属性定义Bean的作用域,严格上讲是Bean创建对象的方式。

singleton 单例对象

每一个bean定义对应一个对象实例,默认项,在getBean时,每一次都是同一个对象。

prototype 原型

一个bean定义对应多个对象实例,每一次getBean都是相同类型,不同地址的对象。

request

在web中一次Http请求与响应对应一个Bean定义的实例。

sission

在web中一次会话对应一个Bean定义的实例

2:Bean的生命周期

1)指定初始化回调方法

init()

2)指定销毁回调方法 destroy()

仅适用于singleton 单例对象式

AbstractApplicationContext

c=(AbstractApplicationContext)ctx

c.close();

销毁必须要把ApplicationCotext类型强转成AbstrcatApplicationContext类型才能调用close方法。

3:Bean的延迟实例化

1)ApplicationContext在默认情况下会将singleton单例对象在启动容器是创建。

4:指定Bean依赖关系

1)

四IOC

具有相同生命周期的关系,叫做组成关系。有必然关系但没有共同生命周期,叫依赖关系。有关系,但不一定是必然关系叫做关联关系。

Spring提供了注入DI/IOC功能,解决维护对象的关系。解决了耦合性问题

紧耦合与松耦合性

紧耦合:代码写死了,对象关系不能改变。

松耦合:对象的关系,可以后期更改,无需变更编码

1:IOC概念

IoC被译为控制反转,管理对象和对象的关系(创建Bean实例管理Bean周期) 2:DI注入方式

依赖注入,

1)setter注入

bean标签中property属性设置该bean的set方法。

2)构造器注入。

调用有参数构造器注入,用bean标签的constructor-arg 3:Spring支持的多种数据类型的注入

1)注入类型

(1)基本类型注入

将基本类型数据注入到指定bean中

(2)引用类型注入

将引用类型对象注入到指定的Bean中

(3) 集合注入

a:在Bean标签中定义注入Bean属性,而属性是集合,就要在集合中添加元素,在注入到Bean属性中。

类属性赋值

b:引用方式的集合注入

把整个集合当作一个javaBean,添加到另一个Bean中,在这里list看作一个独立的javaBean,可以在java类中通过getBean获取到

该list引用对象。

类属性赋值

(4)表达式注入

a: 用于读取一个Bean的属性,注入给另外一个Bean,可以读基本类型,也可以读取集合

读取list/数组

#{nameList[0]}

读取map

#{map['key']} #{map.key}

读取properties

#{props['key']} #{props.key}

b:利用properties读取硬盘文件内容,将每一个键值队内容存到properties中,所以可以看作引用方式的集合或者javaBean,但增加了一个

特殊的功能,location指向一个properties文件的位置。读取并存到该

properties中。 4:自动装配

1)ByName:按Id匹配

Spring会自动的将Bean属性和Bean的Id按名字匹配,如过匹配上,就会自动调用set方法进行注入。

2)ByType:按类型注入

会在容器中查找与Bean属性一致的对象类型,如果类型一致,就会调用set方法注入属性,如果有同类型的Bean对象,注入失败抛异常。

3)constructor

查找与Bean属性一致的对象类型,如果类型一致,会调用构造器注入。

4)autodetect

会自动匹配类型,当类是无参构造,会自动掉用ByType用set注入.

unit 03

命名空间

一软件的结构

软件的经典结构:3层架构

表现层:

软件的界面,用来呈现数据,与用户交互。Spring MVC 登录框

C:Controller控制器Servlet

V:View 视图JSP

M:Model 模型业务数据和业务处理逻辑。

业务层:

封装了软件的核心功能(业务逻辑功能),UserService

数据层:

提供业务实体的CRUD (增删改查),也被称之为持久化层

Spring可以将软件的各个层面模块进行集成管理。

当定义实体类时,通常属性类型为基本类型的,要使用包装类,因为向数据库插入数据时 数据库值可以表示空,但是基本类型不能表示空。

二基于注解的组建扫描

指定一个包路径,Spring会自动扫描该包和及其子包所有组件类可以避免大量的XML 配置bean的定义。

在XML配置中指定要扫描的包路径,容器在启动时会自动扫描指定的包和包中的所有子包,如果找到在类

前追加注解标记的类,会自动将类加载到容器中,Id为类名,并将首字母小写,

注解声明Bean和bean标记都在同一个Spring容器中,可以相互注入,调用,第三方提供的Jar

只能使用标记声明Bean

1:如何使用组建扫描

step1:在XML配置中指定扫描路径

step2:在组件类定义前面加上注解标记

自动扫描加载到容器,id为类名首字母小写。

2:所有注解标记

@Component

@Named

@Service

@Repostroy

@Controller

3:给自动扫描组件命名

在注解标记后加小括号,并在括号内命名。

4:指定组件的作用域

在注解标记后的小括号中填写的作用域,就会指定Bean属性的作用域,默认为单例singleton.

5:bean的生存周期,初始化和销毁回调的控制

在方法前加bean的生存周期注解,当给某个类追加注解后会在该包中每个bean 属性实例化的同时

初始化一次init方法。 6:指定依赖注入关系

@Resource

@Autowired/@Qualifier

@Inject/@Named

可以是对象属性注入,也可以是Bean属性注入。

1)表达式注入

@Value(Spring表达式)

在对象属性前加该注解标记会将Spring表达式的值注入到对象属性中。

三Spring Web MVC的核心组件

Spring Web MVC是Spring框架为了更快速,简洁于传统的Servlet MVC结构,从而开发出的

以Servlet为核心的框架。该框架提供的API封装了Web开发时常用的功能,其中五个为核心

组件功能,也是最小开发环境。,提供了VC。

1:DispatcherServlet

请求入口

浏览器把请求发送给Spring的前端控制器,由DispatcherServlet处理。

MVC的控制器会执行四个步骤。

2:HandlerMapping

请求派发

控制器将浏览器发送的请求经过DispacherServlet处理后将处理后的请求地址

交给HandlerMapping分配,找到该地址相应的Controller组件处理请求。

3:Controller

封装业务处理,返回结果和视图

Controller中封装了对请求的处理,并将处理结果以视图的方式返回,交给控制器。