Spring笔记

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配合使用保证高可用性,主要功能:身份认证与安全、审查与监控、动态路由、压力测试、负载分配、静态响应处理、多区域弹性。

你可能感兴趣的:(Spring笔记)