zoukankan      html  css  js  c++  java
  • 2018第16周总结

    聊聊Spring的核心组件Spring提供最基础的功能IOC容器,为了实现IOC容器它通过beans、core、context三个组件实现,不仅通过简单工厂模式实现了IOC容器,还通过设计良好的接口及扩展机制,在利用它集中管理对象资源及依赖关系的优势,衍生出AOP、事务管理、Spring MVC等相关功能,即便现在流行的Spring Boot、Spring Could也是在此基础上。

    聊聊Spring中的工厂BeanFactory是IOC容器的顶层接口,FactoryBean是Spring 工厂Bean的SPI接口,通过getObject产生bean实例,是典型的工厂方法模式;ObjectFactory是对象工厂,通过getObject方法返回新的实例对象,FactoryBean和ObjectFactory都是用来取得Bean,但使用的方法和地方不同,FactoryBean被配置好后,Spring调用getObject()方法来取得Bean,ObjectFactory配置好后,在Bean里面可以取得ObjectFactory实例,需要我们手动来调用getObject()来取得Bean。

    聊聊Java SPI机制SPI(服务提供接口)是Java为不同模块间服务接口定义的规范,服务提供方按SPI法规实现,可以让服务调用方在不修改代码的情况下动态替换服务提供方模块,从而减少服务调用方和提供方模块间的耦合。Spring不同模块间也有类似的SPI机制,Dubbo也是在SPI机制基础上扩展,在保证服务调用方和提供方尽可能少耦合的前提下实现更多的功能。

    Spring中Bean获取IOC容器服务的方法现在J2EE项目一般都是用Spring IOC容器,但不少情况下应用要获取IOC容器对象自身一些信息来实现某些特定的功能,一般有两种方法,一是直接通过@Autowired注解注入IOC容器对应的Bean对象(IOC容器本身也是Bean对象),另一种方法是实现相应的Aware接口,像是BeanFactoryAware、 BeanNameAware、ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等。实现这些Aware接口的Bean在被实例化后可以获取相对应的资源,例如实现BeanFactoryAware的Bean在实例化后,Spring容器将会注入BeanFactory的实例,而实现ApplicationContextAware的Bean,在Bean被实例化后,将会被注入 ApplicationContext的实例等等。尤其是在自己实现的工具类静态方法中,一般采用这种实现接口的方式。

    Spring中的扩展点围绕着IOC容器及其Bean实例化过程,一般分为三大类扩展,BeanFactoryPostProcess接口及其子接口,在IOC容器实例化所有Bean之前调用让应用通过获取IOC容器bean或bean定义注册表对象做一些自定义操作;BeanPostProcess接口及其子接口,在bean实例化调用让实现该接口的应用获取到实例化后的bean对象实现一些自定义功能;FactoryBean接口让其实现类可以自定义Bean的实例化过程。

    依赖倒置原则DIP&控制反转IOC&依赖注入DI对于DIP原则、控制反转IOC及其依赖注入DI的一种理解,为增加软件的可维护性,设计分层时要应用依赖倒置DIP原则,其思路是采用控制反转IOC,具体实现通过依赖注入DI(实例化对象时就将它依赖的实例对象传入,而不是在实例化对象过程中,在临时创建依赖的对象),一般项目上可采用线程的IOC容器,比如Spring IOC。

  • 相关阅读:
    Python生成器
    字符串匹配——KMP算法
    字符串匹配——Brute-Force 简单匹配算法
    算法笔记--八个常见排序算法总结
    算法笔记--基数排序
    算法笔记--归并排序
    算法笔记--堆排序
    算法笔记--直接选择排序
    算法笔记--快速排序
    算法笔记--冒泡排序
  • 原文地址:https://www.cnblogs.com/doit8791/p/8906538.html
Copyright © 2011-2022 走看看