一、spring的理解

1、spring 是一个大概念,开始是一个library到现在的一个系列;

2、spring现在最主要的内容是spring Framework、spring data、spring security、spring Batch,快速框架 spring boot,微服务架构spring cloud,其中最主要的是springFramework,它包含了IoC、AOP、MVC以及Testing;

3、Spring 的核心就是IoC和AOP,IoC就是依赖注入,简言之就是将对象的创建交由Spring容器,由原来的编译时延迟到运行时,及是通过配置进行加载,这样一来就解决了不用编译,后期选择具体的实现,本身也是面向对象的核心理念。简言之就是从原先的new 变为配置组装,内部通过注入解决依赖关系;

4、AOP就是面向切面编程,使用最多的就是事物(动态代理,invokationHandler-jdk、MethodInterceptor-cglib )、记录日志,自己写AOP的话就利用@aspect 和@pointcut

二、Spring 最有价值的应用:

1、Ioc和AOP就是一个套路,spring 用这个套路集成了多个orm,所以spring 越做越大,慢慢就形成了 spring way;

2、spring的实践应用,spring mvc、spring data、spring Security、Spring boot、spring cloud等

三、spring mvc的运行流程

1、用户发送请求到前端控制器DispatcherServlet;

2、DispatcherServlet收到请求调用HandlerMapping 处理器映射器;

3、处理器映射器通过xml配置或者注解找到对应的处理器,并生成处理器对象以及处理器拦截器(如果有),并返回给DispacherSersvlet;

4、DispacherSersvlet调用HandlerAdapter适配器;

5、HandlerAdapter 经过适配后调用具体的后端Controller;

6、Controller完成后返回ModelAndView给HandlerAdapter;

7、HandlerAdapter返回给DispatcherServlet;

8、DispatcerServlet 传递给ViewReslover视图解析器;

9、视图解析器返回View给DispatcherServlet;

10、DispatcherServlet 根据view 渲染视图,响应用户;

四、Spring data

1、包含了很多子项目,有commons,jpa,jdbc,Document、key-value等,他不拘礼与关系型数据库还是非关系型数据库,只在简化数据持久化操作,他提供了对数据库crud的操作方法,降低了数据访问对象的开发量;

五、spring Security

Spring Security是基于spring ioc和Aop为企业级应用提供安全控制的解决方案,减少企业级应用中开发大量的重复的安全代码;

1、 Web/Http 安全:这是最复杂的部分。通过建立 filter 相关的 service bean 来实现框架的认证机制

2、业务对象或者方法的安全:控制方法访问权限的。

3、AuthenticationManager:处理来自于框架其他部分的认证请求。

4、为 Web 或方法的安全提供访问决策;

5、AuthenticationProvider:AuthenticationManager 是通过它来认证用户的。

6、UserDetailsService:跟 AuthenticationProvider 关系密切,用来获取用户信息的。

Shiro

1、shiro 提供了用户认证、权限认证、session管理、加密、记住我、cache、Testing,web集成,多线程应用的并发验证;

2、shiro三大核心Subject, SecurityManager 和 Realms

spring Security和shiro的比较:
Shiro比Spring更容易使用,实现和最重要的理解
Spring Security更加知名的唯一原因是因为品牌名称
“Spring”以简单而闻名,但是很多人发现安装Spring Security很难
然而,Spring Security设置支持更好
Apache Shiro在Spring Security处理密码学方面有一个额外的模块
Spring-security 对spring 结合较好,如果项目用的springmvc ,使用起来很方便。但是如果项目中没有用到spring,那就不要考虑它了。
Shiro 功能强大、且 简单、灵活。是Apache 下的项目,比较可靠,且不跟任何的框架或者容器绑定,可以独立运行;

六、spring Batch

1、批处理框架,大型企业应用中批量下发命令;

七、spring boot

开发目的是简化spring的配置和开发过程,框架使用了特定的配置,从而使开发人员不必在关注很多spring 模板化的配置,他致力于快速应用开发领域;

  1. 创建独立的Spring应用程序
  2. 嵌入的Tomcat,无需部署WAR文件
  3. 简化Maven配置
  4. 自动配置Spring
  5. 提供生产就绪型功能,如指标,健康检查和外部配置;

八、spring cloud

Spring Cloud是一个基于Spring Boot来实现的一系列工具框架的集合体,Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态), 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台;

1、 服务发现——Netflix Eureka :一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端;

2、客服端负载均衡——Netflix Ribbon :主要提供客户侧的软件负载均衡算法;

3、断路器——Netflix Hystrix: 断路器可以防止一个应用程序多次试图执行一个操作,即很 可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久 的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正​​,应用程序可以尝试调用操作;

4、 服务网关——Netflix Zuul :类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性;

5、 分布式配置——Spring Cloud Config;

……