搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > java领域帝国 > spring,Tomcat容器化思想,java程序员必知

spring,Tomcat容器化思想,java程序员必知

java领域帝国 2020-08-02

       通过自己对java不断的了解和最近收集一些关于spring相关的资料。感觉spring容器化思想对java来发者来说越来越重要了。所以我写一下我对spring容器的理解。

      实际上spring容器就是一个放bean实例的容器(bean一定是实例化后的,类似于new())。当然了bean实例之前还需要进行类的定义,这些定义信息也需要进行存储。对于懒加载lazy只有访问的时候才会进行实例化。其他情况下容器创建就会实例化。spring官方只是设计一套管理spring容器的流程。这些流程是系统自己设置的。我们也可以调用然后修改。例如spring后置处理器(他是执行前后进行处理,有点像装饰器设计模式)。spring容器设计好处就是我们不需要知道他运行原理。只需要把我们后期开发调用的bean对象放在容器里面就可以了。平时在我们程序设计的时候调用就可以了不需要重复的new浪费内存。尤其对于单例模式设计很简单,我们调用的时候只需要@Autowried就可以了。最后设计完成后,系统自动回吧这些代码放在Tomcat容器中(WEB设计模式)。Tomcat也是java写的一个容器,和spring差不多。容器有一个好的特点如果一个类需要一个bean作为参数。他直接会在容器中找,不需要人工干涉。如果你要设计框架例如Mybatis集成spring,springcloud,springboot与spring有关系的框架时候,需要修改spring启动和实例化流程,对于普通开发人员我们不需要修改spring过程,只需要创建和存储就可以了。以下是spring全生命周期运行过程。感兴趣的读者可以对着源码进行跟踪一下。spring整个系统是一个工厂设计模式。设计和使用相互分离。里面大量用到stactic和final等关键词用于存储产生的对象,供其他使用者调用。

           

public void refresh() throws BeansException, IllegalStateException {

synchronized (this.startupShutdownMonitor) {

prepareRefresh();



postProcessBeanFactory(beanFactory);


invokeBeanFactoryPostProcessors(beanFactory);


registerBeanPostProcessors(beanFactory);


initMessageSource();


initApplicationEventMulticaster();


onRefresh();


registerListeners();


finishBeanFactoryInitialization(beanFactory);


finishRefresh();

}

   


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《spring,Tomcat容器化思想,java程序员必知》的版权归原作者「java领域帝国」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注java领域帝国微信公众号

java领域帝国微信公众号:Java_DiGuo

java领域帝国

手机扫描上方二维码即可关注java领域帝国微信公众号

java领域帝国最新文章

精品公众号随机推荐