spring4 系列一 概览
零、前言
java是静态类型语言,为了能达到动态类型语言的效果,需要支持
1、控制反转(转给web容器):调用实现的地方写死在代码里不灵活,所以写在xml中。
2、依赖注入:在需要的时候由容器来注入需要的对象,是具体被反转的东西
3、aop:利用反射进行hack,对于原生支持函数式编程的语言来说根本不需要这种hack的机制
4、java.lang.instrument 实现对jvm和class的动态代理
http://www.cnblogs.com/wade-luffy/p/6078301.html
一、spring4工程概览
spring boot
微服务
spring framework
最基础的框架功能,比如ioc、aop、webmvc、声明式的transaction
Spring Security
处理安全验证等问题
Spring Session
session相关的问题
Spring Cloud
分布式计算基础组件
Spring Cloud Data Flow(微服务架构)
数据的导入、导出、采集、实时分析等,用于对大数据工程进行支持
二、spring framework概览
1、 Core Container
1)spring-core 封装了asm、 cglib等动态改字节码的库,工具类,obj的反射,io,序列化,并发task,数据类型间的转换,注释、factory、configurale、DecoratingProxy、classloader等顶级接口(反射+配置)
2)spring-beans 工厂模式,以及基于xml、annotation等方式创建bean
3)spring-context 依赖注入,javaee环境的创建
4)spring-context-support为集成第三方库(如定时器Quartz)提供支持。
5)spring-expression 解释和执行字符串表达的程序(在定义xml或注释时,执行程序逻辑)
2、AOP and Instrumentation 动态代理相关
spring-aop
spring-aspects
spring-instrument
spring-instrument-tomcat
spring-messaging
3、Data Access/Integration
spring-jdbc
spring-tx 声明式的使用transaction
spring-orm
4、web相关
spring-web: web context、http
spring-webmvc,
spring-websocket,
spring-webmvc-portlet
5、test
单元测试
集成测试
mock
三、spring boot概览
1、传统基于容器的javaee开发的痛点:
配置、集成复杂;测试、发布等流程复杂;不适合做微服务,企业应用的基本思想是在统一的应用服务器中,部署多个app,像安全、事物、分布式、数据库等功能由应用服务器提供,而微服务讲究的是小巧、轻快、分布式,易扩展,快速迭代。
2、解决的问题:
把web开发和普通java app开发统一成使用main作为入口
把war jar等发布方式,变成内嵌web容器,方便实现微服务
提供pom简化配置
不需要代码生成和xml配置
3、常见starter的配置文件信息
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-starters