专栏首页编程Spring in Action 要点总结

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 条评论
登录 后参与评论

相关文章

  • PhpSploit:一款隐蔽性极强的后渗透利用框架

    今天给大家介绍的是一款名叫PhpSploit的远程控制框架,该工具可以帮助攻击者在客户端与Web服务器端之间建立隐蔽性极强的交互式链接(类似Shell)。简而言...

    企鹅号小编
  • Hue中使用Oozie创建Shell工作流在脚本中切换不同用户

    温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

    企鹅号小编
  • 中国IDC圈、科智咨询王若冰:从供到需——IDC产业的演进之路

    未来三年,IDC市场的发展仍是乐观的。2019年,中国IDC市场规模将达到1900亿。其中互联网企业贡献最大,其次是传统金融业、政府职能部门、制造业、能源业等。...

    企鹅号小编
  • 很全的路由器默认初始密码集合

     全向QL168010.0.0.2,用户名admin密码是qxcomm1680,管理员密码是qxcommsupport 全向QL1880192.168.1.1,...

    似水的流年
  • iOS 10.3下使用Fiddler抓取HTTPS请求

    最近使用Fiddler抓取手机上的HTTPS请求时,遇到一个问题。设置完之后,访问HTTPS的页面,却得到一个错误

    meteoric
  • NoSQL数据库的分布式算法

    原文出处: highlyscalable.wordpress.com 译文出处:juliashine 系 统的可扩展性是推动NoSQL运动发展的的主要...

    wangxl
  • NoSQL数据库的分布式算法

    原文出处: highlyscalable.wordpress.com 译文出处:juliashine 系 统的可扩展性是推动NoSQL运动发展的的主要理由...

    wangxl
  • 「死磕」Core Data——入门

    因为我是文科狗转行的程序猿,并没有学过数据库相关课程,也欣赏不出SQLite的美,所以之前的项目一直用NSKeyedArchiver和NSKeyedUnarch...

    iOS Development
  • 基于GEE和S1自动提取水稻种植区

    这项研究提出了一种经济有效的方法,可用于近实时地绘制和监测大面积水稻的生长程度和种植方式。这种新颖的方法可以生成水稻种植区的高分辨率月度地图(10 m分辨率)以...

    农险专家
  • Vue学习笔记之Nodejs入门

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。  Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻...

    Jetpropelledsnake21

扫码关注云+社区

领取腾讯云代金券