Spring4框架学习笔记

2017-06-30  本文已影响0人  胖头鱼战士

概述

Spring4是一套JAVA的MVC框架,经过一系列的自动化改良,如今变得非常简单易用。Spring4框架的功能很多,有非常多详细的介绍,这里仅仅提纲式的陈列要点,以帮助初学者快速入门。
如在本笔记中发现错误,欢迎指正。

参考资料

《Spring实战》,第四版,人民邮电出版社。

Bean装配

创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质。装配就是将一个符合定义的bean赋予给一个定义的变量。
Spring提供了三种装配方式,这三种方式也可以混合使用:

此外,Spring还提供了两种条件化装配方式:

隐式bean发现和自动装配

两个步骤完成自动化装配:

组件扫描
bean定义
自动装配

Java代码装配

在JavaConfig类中可以进行显式的配置,创建JavaConfig类的关键在于要添加@Configuration注解以表明这是一个配置类。
通过@Import注解可以在配置类中导入其他的配置类。

XML装配

某些情况下不得不使用xml来进行装配,但是这种场景很少见,这里就略过了。

根据环境装配

通过使用注解@Profile可以指定bean属于哪个环境,没有使用该注解的bean在任何环境下都会被创建。
@Profile注解可以放在如下位置:

根据条件装配

处理装配歧义

当有多个满足条件的bean都能进行装配时,Spring会因为不知道该装配哪一个而报错,Spring提供了如下方式来处理歧义:

Bean作用域

Spring为bean定义了多种作用域,通过在声明bean的同时使用@Scope注解可以指定bean的作用域:

环境配置

Spring允许为不同的环境设置不同的环境变量,resource目录下的application.properties文件或者application.yml文件就是用来进行环境和环境变量的配置的。

变量设置

环境配置

环境激活

环境变量获取

面向切面编程

在软件开发中,散布于应用中多处的功能被称为横切关注点。把这些横切关注点与业务逻辑分离正是面向切面编程所要解决的问题。

术语理解

Spring对AOP的支持

Spring提供了4中类型的AOP支持,前三种都是Spring AOP实现的变体:

注解创建切面

定义切面的语法
image.png
创建切面

注入AspectJ切面

Spring AOP和AspectJ相比是一个比较弱的解决方案。但对于大部分功能来讲,AspectJ切面与Spring是相互独立的,在应用AspectJ切面时几乎不会涉及到Spring。
具体介绍这里略过。

Spring REST

Spring REST用于开发web应用,是Spring MVC框架实现的功能。
由于现在通用的Web架构已经将前端View和后端Controller分离,而后端普遍采用Restful的方式提供API接口,因此完整的MVC架构已经很少使用了,这里也就不多介绍。

REST基本概念

REST含义

Representational State Transfer,表述性状态转移:

REST动作

REST是通过HTTP方法来定义的,CRUD动作和HTTP方法的匹配关系如下:

REST创建

控制器类
控制器方法

异常处理

异常类

默认情况下,Spring会将自身的一些异常自动转换为合适的状态码。
通过为自定义异常类添加@ResponseStatus注解,可以为其添加状态码和返回消息,参数如下:

异常处理方法
异常处理类

校验器

当控制器方法的传入参数是一个Model类型时,可以为该参数添加注解进行校验:

校验规则在Model类中进行定义,方法是为属性添加注解,列举几个常用注解:

REST客户端

Spring提供了一个RestTemplate作为REST客户端模板,使用它可以方便的发送restful的请求。

Spring Security

Spring security是一个RBAC认证框架。不过默认角色和权限不是一对多的关系而是两个独立的概念,如果需要实现通常理解的模型,需要定制化开发。

配置Security

启用
配置

WebSecurityConfigurerAdapter有三个configure方法可以重载用来配置安全性:

方法保护

Security还可以用来保护方法,通过在JavaConfig类上添加@EnableGlobalMethodSecurity注解来启用该功能。
Security提供了三种不同的安全注解:

关系型数据库

Spring访问关系型数据库的便利:

配置数据源

JDBC模板

缓存

Spring提供了多种缓存管理器的实现,具体选择哪一种取决于想要使用的底层缓存供应商。
通过在JavaConfig类上添加@EnableCaching注解来启用缓存,然后在类中配置缓存管理器、缓存管理器工厂和模板。

使用缓存

如下注解可以放在方法或者类上:

一些省略的内容

上一篇下一篇

猜你喜欢

热点阅读