Java的项目基本上会用到spring框架,可以说,spring框架已经成为Java的事实标准。
springboot声称 build anything。
spring框架包含多个模块,如图,官网的:
一,有两个重要的概念,IOC和AOP,这是spring框架的基石,理解了这个两个概念,也就是理解了spring框架。
1,IOC(Inverse Of Control),控制反转,spring容器接管对象,创建和维护。之前是用户自己new。理念:让别人为你服务。
Spring的IoC容器主要有两种,即BeanFactory和ApplicationContext(这个容器功能更加齐全,一般用这个)。
图一
2,AOP(Aspect-Oriented Programming),面向切面编程。
采用动态代理机制和字节码生成技术实现。JDK动态代理(仅支持接口,不支持类)和cglib技术。
Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置。如图:
图一
图二
可以用来做日志,权限校验等。
参考官网: https://docs.spring.io/spring/docs/4.3.22.RELEASE/spring-framework-reference/htmlsingle/#aop
很多功能用到了AOP的技术,比如事务的注解实现,spring 安全框架的使用等等。
3、IOC的注解方法:查看项目 https://github.com/hannibal2017/p2p/tree/simpleDemo/spring_annotation
AOP的XML方式: 查看项目 https://github.com/hannibal2017/p2p/tree/simpleDemo/springAOP_xml
AOP的annotation方式 查看项目 https://github.com/hannibal2017/p2p/tree/simpleDemo/springAOP_annotation
对应的文件readMe有说明。
4,spring事务
整体介绍:
编程式事务和声明式事务(常用),参考:SSM框架。
传播行为有七种,隔离有五种。