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中封装了对请求的处理,并将处理结果以视图的方式返回,交给控制器。