Spring in Action 要点总结

一、Spring基础

1. Environment

环境抽象:profiles 和 properties.

2. SpEL

Spring EL 表达式

3. 设计模式 Template模板

封装样板室代码(如资源获取、回收)

二、依赖注入(DI、IOC)

1. 构造器注入和Setter方法注入

2. 装配bean(以下三种方式可以混合使用)

2.1 在XML中进行显式配置。

2.2 在Java中进行显式配置。

2.2.1 @Configuration Config类注解

2.2.2 @Bean Bean生成方法注解,方式通过new生成对象。

通过new时候传入对应Bean的方式注入其它Bean

2.3 隐式的bean发现机制和自动装配(因在源码上注解,无法支持第三方库注入,以上两种可以)

2.3.1 Bean: @Component(@Controler,@Service, @Repository) 定义Bean

2.3.2 Scan:@ComponentScan 扫描对应位置下Bean

2.3.3 Wire: @Autowired(Spring规范) @Inject 装配(注入)

三、高级装配

1. Bean Profile (JavaConfig方式,也可用XML方式)

@Profile 通过配置,指定生成的Bean

2.激活Profile

指定激活哪个Profile,配置方式如下:

3. 条件化Bean

根据条件判断结果,确定是否创建Bean

注:@Profile本身也使用了@Conditional

4. 自动装配的歧义性处理

首选:@Primary 限定某个:@Qualifier

5. bean的作用域

默认Singleton,通过@Scope指定

四、面向切面

1. AOP基础

1.1 切面(Aspect):通知(advice)、切点(pointcut)

1.2 连接点(join point)

1.3 织入(Weaving):把切面应用到目标对象(切点)并创建新的代理对象的过程

1.3.1 织入方式:

1.3.2 Spring使用第三种:动态代理

2. 切面示例(JavaConfig方式,也可用XML方式)

2.1 通知及切点

2.2 环绕通知,包含2.1所有通知(before、after)

3. 处理通知中的参数(传入参数给通知)

4. Spring 注入 AspectJ

Srping 只实现了部分AOP规范,如功能不满足,可对接AspectJ

五、SpringMVC

视图:JSP、Thymeleaf等

六、 Srping Web Flow(工作流)

1. Spring Web Flow 状态

1.1 行为(Action):行为状态是流程逻辑发生的地方

1.2 决策(Decision):决策状态将流程分成两个方向,它会基于流程数据的评估结果确定流程方向

1.3 视图(View):视图状态会暂停流程并邀请用户参与流程

1.4 结束(End):结束状态是流程的最后一站。一旦进入End状态,流程就会终止

1.5 子流程(Subflow):子流程状态会在当前正在运行的流程上下文中启动一个新的流程(只流程可包含以上四种)

1.6 转移(状态转移,如上例子)

转移使用元素来进行定义,它会作为各种状态元素(、、)的子元素

2. 流程数据

2.1 变量(var、evaluate、set)

2.2 变量作用域(如上例子,viewScope、flowScope)

3. 工作流例子

3.1 订购pizza主流程

3.2 其中创建订单子流程

七、Spring Security

1. 保护应用

基于Filter

1.1 启用 Spring Security

1.2 连接用户库(支持写死、jdbc、ldap等)

1.3 拦截请求

2. 保护视图

3. 保护方法

@EnableGlobalMethodSecurity 基于代理

3.1 保护方法调用

@Secured(Spring规范), @RolesAllowed 限制角色

3.2 使用表达式定义安全规则

3.3 创建安全表达式计算器

因3.2注解表达式过长,不可调试,可定义单独许可计算器类

八、Spring持久化、缓存支持

1. 关系型数据库支持

1.1 Spring jdbc

1.2 Hibernate

1.3 JPA

2. NoSQL支持

2.1 MongoDB 非结构文档数据库

2.2 Neo4J 图数据库

2.3 Redis 缓存,可持久化

3. 缓存支持

3.1 Ehcache

3.2 Redis

九、Spring 远程服务支持

1. RPC

1.1 RMI

1.1.1 RMI实现步骤

1.1.2 RMI缺点

(1)通过任意端口交互,难以穿透防火墙(防火墙限制端口)

(2)客户端、服务端均需Java开发

1.2 Hessian和Burlap

基于Http

1.3 Spring HttpInvoker

1.4 SOAP web service

通过Java API for XML Web Service(JAX-WS)实现支持

2. RESTful

REST与RPC几乎没有任何关系。RPC是面向服务的,并关注于行为和动作;而REST是面向资源的,强调描述应用程序的事物和名词。

十、异步消息

1.服务端之间消息协议

JMS(Quene、Topic)

AMQP(Exchange -> Quene) 实现:如RabbitMQ

2.浏览器与服务端消息协议

WebSocket(底层) -> STOMP (高层)

浏览器端实现:SocketJS STOMP 服务端实现:如ActiveMQ,RabbitMQ

3. Email支持

十一、JMX

JMX:JAVA Management Extensions

功能:在应用的运行期查看应用程序的内部情况并且能够更改配置,JMX管理工具如:JConsole、VisualVM

1. MBean导出到MBean服务器

Tomcat自带服务器,或者指定服务器

2. 远程管理MBean(连接到MBean服务器管理MBean)

3. JMX通知 使MBean与外部世界进行主动通信

本文来自企鹅号 - 言射手媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JMCui

浅析 SpringMVC 原理和配置.

一、原理       Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)模式实现,它能够帮你构建像Spring框架...

3889
来自专栏技术翻译

使用Spring Cloud Netflix的Kotlin微服务:第2部分

在本系列的第1部分中,我们使用Kotlin介绍了Spring Cloud。我们讨论了Config Server,Discovery Server(Eureka)...

2422
来自专栏CodingBlock

Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身

本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html

1082
来自专栏Java3y

Druid数据库连接池就是这么简单

前言 本章节主要讲解Druid数据库连接池,为什么要学Druid数据库连接池呢?? 我的知识储备数据库连接池有两种->C3P0,DBCP,可是现在看起来并不够用...

51211
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》第8章 Spring Boot集成Groovy,Grails开发第8章 Spring Boot集成Groovy,Grails开发小结参考资料

本章介绍Spring Boot集成Groovy,Grails开发。我们将开发一个极简版的pms(项目管理系统)。

1712
来自专栏一枝花算不算浪漫

[Spring框架]Spring开发实例: XML+注解.

45412
来自专栏Java帮帮-微信公众号-技术文章全总结

Spring-拾遗

Junit集成 前面多次用到@RunWith与@ContextConfiguration,在测试类添加这两个注解,程序就会自动加载spring配置并初始化Spr...

3115
来自专栏CodingBlock

Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身

本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html 在Android...

2946
来自专栏大数据和云计算技术

Flume日志收集系统架构详解

任何一个生产系统在运行过程中都会产生大量的日志,日志往往隐藏了很多有价值的信息。在没有分析方法之前,这些日志存储一段时间后就会被清理。随着技术的发展和分析能力的...

5398
来自专栏程序猿DD

Spring Cloud构建微服务架构:分布式服务跟踪(入门)

通过之前的N篇博文介绍,实际上我们已经能够通过使用它们搭建起一个基础的微服务架构系统来实现我们的业务需求了。但是,随着业务的发展,我们的系统规模也会变得越来越大...

3004

扫码关注云+社区

领取腾讯云代金券