1.factoryBean与beanfactory
beanfactory 是spring的一个ioc容器,它是最基本的一个ioc接口,主要用来管理生成的bean,spring提供了实现他的一些类,例如常用的applicationcontext等
factorybean是一个bean,但它不是普通的bean,普通的bean主要是spring通过反射而实例化的bean,factorybean主要是用于生产和修饰对象的工厂bean。
2.filter,interceptor,asbeject
interceptor:拦截器,基于springmv实现,主要有三个方法,prehandler,postHandler,complateHandler,preHandler主要是在方法请求之前调用,可以用于登录控制,权限控制等等
postHandler主要是方法执行完成,还没有做渲染的情况下,比如登录后保存回话等;
complateHandler主要是渲染完成后,对资源的释放情况
filter:过滤器,主要是过滤一些url,基于servlet实现,能通过request和response去获取参数
aspect:切面编程,主要是作用于方法,方法执行前,执行后,以及抛出异常等等情况,都可以做处理
范围 filter-> interceptor->aspect
3.项目中用到的设计模式
1>工厂模式和策略模式
通过发送消息不同的消息模板采用不同的策略。
工厂类保存code和不同的策略实现类型,在bean的实例化过程中,实现applicationContextaware来设置applicationContext的属性值,通过全局map来保存code和具体的实现策略bean。
通过消息队列来发送mq短信,在消费者中来消费发送短信,通过code找到具体的策略实现类。
2>spring的监听器,观察者模式
项目应用,在不同的流程节点发布事件,进行监听,在监听器里面再发布mq消息。
3>单例模式
懒汉模式与饿汉模式
懒汉模式:需要用到对象的时候才创建,为了保持线程安全,需要加同步锁,导致性能不高,但是占用内存小
饿汉模式:初始化就创建了对象,是线程安全的,不需要加同步锁,效率高,但是占用内存大
4>代理模式
spring aop切面编程采用代理模式,实现接口的jdk动态代理模式,没有接口实现的cglib代理模式
4.eureka与zookeeper
eureka 注册中心在cap理论中,保证了ap,也就是保证可用性和容错性,各个服务将会相互注册,即使其中一台挂掉,也能保证服务的可用性,但不保证数据一致性
zookeeper保证了cp,也就是数据一致性和容错性。leader参与事务的处理和调度,flower参与leader的选举,当leader不可用时,事务将被挂起,在flower中重新选举leader。
看业务的需求取舍吧,保持强一致性的话,就使用zookeeper,保持高可用的话,就使用eureka
5.BIO ,NIO,AIO
BIO:同步阻塞 ------一个连接一个线程
NIO:同步非阻塞 ------一个请求一个线程
AIO:异步非阻塞 -------一个有效请求一个线程 --- 增加了事件的回调机制
6.dubbo与springcloud



