1.Spring用到的动态代理分为java动态代理和CGILB动态代理,相同点是都是通过反射机制创建运行时被代理类,不同是后者不依赖接口,而是创建被代理类的子类。
2.java动态代理的实现步骤:通过实现InvocationHandler接口创建自己的调用处理器;通过Proxy指定类加载器/接口/处理器来创建代理类;通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型;通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。
3.MyBatis主要配置:
properties:驱动类/数据库地址/用户民密码
settings:Mybatis底层设置配置
typeAliases:别名,可继承BaseTypeHandler自行实现
environment:
-- transactionManager :实现TransactionFactory可自行实现
-- dataSource:数据源环境 POOLED/UNPOOLED/JNDI
4.AOP的描述:
使用动态代理技术,将代码织入对应的流程环节中,典型的场景就是数据库事务物,开发者不需要关心异常回滚和资源关闭的具体逻辑。
利用@Aspect @Pointcut等注解即可完成AOP开发。常见功能如埋点和行为统计。
5.@Transactional失效:
@Transactional底层实现是AOP技术,因此对于静态和非public方法是失效的。
另外,如果事务方法调用本类中方法,就不会产生代理对象,同样会使AOP失效。
6.SpringMVC的请求处理流程
7.微服务架构的优点:
~ 易于开发和维护,一个服务关注一个功能,业务清晰,代码量少;
~ 单个微服务启动快;
~ 局部修改容易部署,适合快速迭代;
~ 技术栈不受限;
~ 便于按需横向伸缩。
微服务的缺点:
~ 运维要求高;
~ 复杂性高,系统容错、网络延迟、分布式事务都会带来巨大挑战;
~ 服务间通信有性能损耗;
~ 重复劳动。
8.微服务的设计原则:单一职责、服务自治、轻量级通讯、服务粒度
9.Eureka:服务注册发现及心跳监控;
Ribbon:负载均衡;
Feign:声明式Restful调用(@FeignClient);
Hystrix:实现微服务熔断和超时,结合Turbine可以做到集群监控;
Zuul:微服务网关;与Nginx配合使用保证高可用性,主要功能:身份认证与安全、审查与监控、动态路由、压力测试、负载分配、静态响应处理、多区域弹性。
网友评论