常用框架
Netty
RPC:Motan、Dubbo、Grpc
Strus
ORM:Hibernate、Mybatis
Spring:
Spring Frameword:
常说的spring框架
IOC依赖注入
Context上下文
bean管理
SpringMVC
其它spring项目也会依赖spring框架
Spring Boot:
简化了应用开发模式
Spring DATA:
封装了多种数据源操作能力,比如jdbc、redis、mongodb
Spring Cloud:
一套完整的微服务解决方案
Spring Security:
快速构建安全的应用和服务
spring初了解
原架构:
Controller层:
Servlet(Spring MVC或Strus2)
JSP
Service层:
业务逻辑
DAO层:(Hibernate或Mybatis)
spring贯穿上面所有层
spring优点
方便解耦,简化开发
spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给spring管理
AOP编程支持
方便的实现对程序进行权限拦截、运行监控等
声明式事务的支持
只需要通过配置就可以完成对事务的管理
方便测试
对junit4支持,通过注解方便测试
集成各种优秀框架
对javaee中一些难用的api(如jdbc),提供了封装,降低了使用难度,同时还支持各种优秀的框架
本身一站式
如果不使用其它框架,spring本身也全支持,但一般都选择集成优秀框架
核心包
Spring-beans
xml文件手动注入
Spring-context
类内注解,对应xml文件中的手动注入
Spring-core
Spring-expression
IOC 控制反转
DI依赖注入
BeanFactory Spring原始接口
ApplicationContext 容器
AOP 面向切面编程
对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低
横向重复 纵向抽取
优点:
1.不修改源码的情况下,进行权限校验、日志记录、性能监控、事务控制。
2.Spring帮我们生产动态代理对象
动态代理
切面编程 基于此实现
典型的动态代理,必须要实现接口,如果没有接口 是不能产生代理对象的;
Cglib代理
底层实现与上面动态代理对比
属于第三方代理对象,可以对任何类生成代理;
代理的原理是对目标对象进行继承代理;
如果目标对象使用final修饰 则无法使用Cglib;
Spring AOP
Joinpoint(连接点)
目标对象中,所有可以增强的方法
Pointcut(切入点)
目标对象中已经增强的方法
Advice(通知/增强)
前置通知:目标方法前调用
后置通知:目标方法后调用
异常通知:出现异常调用
最终通知:无论是否出现异常,目标方法运行后调用
环绕通知:目标方法运行前后都调用
Target(目标对象)
Weaving(织入)
将通知应用到切人点的过程
Proxy(代理)
将通知织入到目标对象之后而形成的代理对象
Aspect(切面)
切入点和通知的结合