精华内容
下载资源
问答
  • 产品的四个生命周期

    千次阅读 2020-01-22 10:32:24
    典型的产品生命周期一般可分为四个阶段,即投入期、成长期、饱和期和衰退期 1.投入期。新产品投入市场,便进入投入期。此时,顾客对产品还不了解,只有少数追求新奇的顾客可能购买,销售量很低。为了扩展销路,需要...

    典型的产品生命周期一般可分为四个阶段,即投入期、成长期、饱和期和衰退期

    1.投入期。新产品投入市场,便进入投入期。此时,顾客对产品还不了解,只有少数追求新奇的顾客可能购买,销售量很低。为了扩展销路,需要大量的促销费用,对产品进行宣传。在这一阶段,由于技术方面的原因,产品不能大批量生产,因而成本高,销售额增长缓慢,企业不但得不到利润,反而可能亏损。产品也有待进一步完善。

    2.成长期。这时顾客对产品已经熟悉,大量的新顾客开始购买,市场逐步扩大。产品大批量生产,生产成本相对降低,企业的销售额迅速上升,利润也迅速增长。竞争者看到有利可图,将纷纷进入市场参与竞争,使同类产品供给量增加,价格随之下降,企业利润增长速度逐步减慢,最后达到生命周期利润的最高点。

    3.饱和期。市场需求趋向饱和,潜在的顾客已经很少,销售额增长缓慢直至转而下降,标志着产品进入了成熟期。在这一阶段,竞争逐渐加剧,产品售价降低,促销费用增加,企业利润下降。

    4.衰退期。随着科学技术的发展,新产品或新的代用品出现,将使顾客的消费习惯发生改变,转向其他产品,从而使原来产品的销售额和利润额迅速下降。于是,产品又进入了衰退期。

    展开全文
  • 应用生命周期是指应用程序进程从创建到消亡的整个过程。比如软件开发从需求分析开始,历经项目规划、项目实施、配置管理、测试管理等阶段,直至最终被交付或发布的全过程。 上述是应用生命周期的定义,旨在回顾下...

    应用生命周期是指应用程序进程从创建到消亡的整个过程。比如软件开发从需求分析开始,历经项目规划、项目实施、配置管理、测试管理等阶段,直至最终被交付或发布的全过程。

    上述是应用生命周期的定义,旨在回顾下概念,并非本文的核心要点。本文想梳理清楚的问题是:企业内部如何管理应用,及与应用配套的资源、项目、需求、缺陷等这些关键要素之间的组织关系如何构建?从而打造一套自动化的应用生命周期管理基础设施。

    1、背景

    为什么要理解清楚应用与配套资源、项目、需求、缺陷等关键要素间的组织关系?这是因为目前部分大中企业普遍存在以下问题,而这些问题是企业数字化转型过程中大概率会撞到的问题,特别是非原生互联网企业:

    • 1、如何统计企业内部的应用总数?
    • 2、如何规划企业数据中心服务器年度购买预算?
    • 3、应用代码库在什么环节初始化?
    • 4、应用与资源在什么环节绑定?
    • 5、应用在开发(测试)、预发、生产各环节与之对应的资源血缘关系如何可视化?
    • 6、开发同学对应用运行的虚拟机一目了然?
    • 7、如何激活一个新需求或缺陷的开发?
    • 8、开发同学如何简洁的完成迭代任务的发布?
    • 9、灰度发布如何实践?
    • 10、如何回滚到上一版本?
    • 11、机器挂了,需要下线这台机器,重新申请一台机器?
    • 12、机器问题应该找谁,能不能不依赖经验记忆,可视化责任人名单?
    • 13、你的企业内部应用发布流程是怎样的,一条线能否串起来?
    • 14、你的企业中开发同学觉得发布应用过程简洁不?
    • 15、服务器宕机数天,为什么没人响应?开发同学找不到责任人?

    上面仅仅列出了应用生命周期中大部分关注度高的问题,但细枝末节的问题数不胜数。这里重点关注一个词语-“流程”,开启一个新应用,直至完成这个应用的发布,流程是什么?梳理流程是本文的核心内容,不过本文仅聚焦各环节节点,节点细节不在本文的讨论内容中。

    2、项目管理

    3、需求管理

    4、应用注册

    5、资源申请

    6、代码库申请

    7、创建feature分支

    8、发布开发

    9、发布测试

    10、发布预发

    11、发布生产

    12、质量管理

    13、缺陷管理

    14、持续交付

    参考资料

    1、应用生命周期-百度百科
    2、阿里巴巴云效

    展开全文
  • 红帽企业Linux生命周期

    千次阅读 2019-11-14 15:22:35
    红帽企业Linux生命周期 总览 细节 生产阶段 全面支持阶段 维护支持一期 维护支持阶段(RHEL 8)阶段/ 维护支持2阶段(RHEL 5、6、7) 延长使用寿命 红帽企业Linux更长的支持附加组件 ...

    红帽企业Linux生命周期

    总览

    红帽企业Linux版本5、6和7

    红帽在四个生命周期阶段为红帽企业版Linux的每个主要版本提供订阅服务,即完全支持,维护支持1,维护支持2和延长生命周期。

    • 红帽企业Linux版本5、6和7在全面支持,维护支持1和维护支持2阶段以及随后的延长寿命阶段中分别提供十年的支持(除非在下面的例外中另有说明)。此外,对于Red Hat Enterprise Linux 5和6,客户可以购买称为扩展生命周期支持(ELS)的年度附加订阅,以将有限的订阅服务扩展到维护支持2阶段之后。

    例外

    • 在Red Hat Enterprise Linux版本7的生命周期内,Red Hat仅为每个发行版的Red Hat Enterprise Linux Atomic Host,适用于ARM的Red Hat Enterprise Linux,适用于Power LE(POWER9)的Red Hat Enterprise Linux和Red Hat Enterprise Linux提供订阅服务。适用于IBM System z(结构A)的全面支持阶段(而非维护支持1或2阶段)支持,其后是延长寿命的阶段。

    生命周期viii

    红帽企业Linux版本8

    红帽了解生命周期规划对于我们的客户,合作伙伴,ISV和红帽企业Linux生态系统的重要性。随着Red Hat Enterprise Linux版本8的引入,Red Hat将RHEL产品阶段从四个阶段简化为三个阶段:全面支持,维护支持和延长寿命阶段。我们还将提供有关预期发布日期和次要版本的信息,这些信息将提供扩展的支持。

    • 红帽企业Linux版本8在完整支持和维护支持阶段提供10年生命周期,随后是延长生命周期。此外,红帽企业Linux 8的客户可以购买称为扩展生命周期支持(ELS)的年度附加订阅,以将有限的订阅服务扩展到维护支持阶段之后。

    生命周期viii

    红帽企业Linux生命周期阶段旨在减少每个主要版本中变化的水平随着时间的推移,使放出的可用性和内容更容易预测。ii

    细节

    在每个主要版本的生命周期中,对红帽企业版Linux的软件更改均通过红帽客户门户网站iii的个别更新(称为勘误公告)提供或其他授权的Red Hat门户。勘误公告可以根据需要单独发布,也可以汇总发布为次要版本。勘误公告可能包含安全修复程序(Red Hat安全公告或RHSA),错误修复程序(Red Hat Bug修复公告或RHBA)或功能增强(Red Hat增强公告或RHEA)。勘误公告已针对有效的Red Hat Enterprise Linux主发行版进行了测试和认证。(例如,将Red Hat Enterprise Linux 8 RHSA累积应用于最新的Red Hat Enterprise Linux 8版本和补丁集。)在整个Red Hat Enterprise Linux生命周期中,活动订户仍可以访问已发布的勘误公告。在Red Hat Enterprise Linux的每个主要版本中,

    在主要的Red Hat Enterprise Linux版本的生命周期中,Red Hat进行了商业上合理的努力,以维护所有次要版本和勘误公告中核心运行时环境的二进制兼容性。如有必要,对于严重影响安全性或其他重大问题,Red Hat可以对此兼容性目标进行例外处理。此外,Red Hat Enterprise Linux的主要发行版包含有限的向后兼容库集,这些库包含在先前的主要发行版中,以便于应用程序的轻松迁移。通常,红帽以使更改量最小化和保持二进制兼容性的方式应用更改。在某些情况下,例外情况可能适用于受控程序包的重新确定基础。二进制兼容性目标已扩展到在应用程序容器中使用的Red Hat Enterprise Linux。但是,这并未扩展到可能在主机之上运行的Red Hat Enterprise Linux Atomic Host或应用程序容器,因为这两者都可能包含不作为Red Hat Enterprise Linux最新版本的一部分提供的软件包或软件包版本。有关更多详细信息,请参见《红帽企业Linux 7:应用程序兼容性指南》或《红帽企业Linux 8:应用程序兼容性指南》

    下表详细介绍了在Red Hat Enterprise Linux生命周期的每个阶段中执行的订阅服务,包括支持和软件维护:

    红帽企业Linux生命周期

    描述

    全力支持

    维护
    支持1
    (RHEL 5、6和7)
    12

    维护
    支持(RHEL 8)
    13

    维护
    支持2
    (RHEL 5、6和7)
    12

    延长寿命阶段7

    延长生命周期支持(ELS)附加组件8

    扩展更新支持(EUS)附加组件8

    通过Red Hat客户门户访问先前发布的内容

    通过Red Hat客户门户网站自助

    技术支持1

    无限

    无限

    无限

    限量9

    无限

    无限

    异步安全勘误(RHSA)10 11

    没有

    是的8

    是的8

    异步错误修复勘误(RHBA)11

    没有

    次要发行

    没有

    没有

    没有

    刷新硬件支持3

    本机

    限量4本

    使用虚拟化

    使用虚拟化

    使用虚拟化

    使用虚拟化

    软件增强功能5

    是的6

    没有

    没有

    没有

    没有

    没有

    更新的安装映像

    没有

    没有

    没有

    1. 技术支持的访问权限取决于Red Hat Enterprise Linux订阅中包含的服务级别。
    2. 在创建Bug Fix勘误咨询(RHBA)时,Red Hat可能会选择使用Hotfix作为临时措施来解决那些对客户业务有重大影响的灾难性问题。
    3. 通过将硬件驱动程序等反向移植到相关版本的Red Hat Enterprise Linux,可以提供本机硬件支持。通过使用较新版本的Red Hat Enterprise Linux作为虚拟客户机运行较早版本的Red Hat Enterprise Linux,可以实现使用虚拟化的硬件支持。有关详细信息,请参见下面的虚拟化说明。注:硬件认证(包括相关的硬件限制)适用于用作主机的Red Hat Enterprise Linux版本。
    4. 维护支持1阶段中的本机硬件启用仅限于不需要大量软件更改的硬件启用。有关详细信息,请参见下面的维护支持1说明。
    5. 软件增强功能是对新功能的补充,不仅可以纠正缺陷,还可以在新一代硬件上启用以前存在的功能。
    6. 主要发行版是进行重大软件增强的主要工具,尽管影响较小的软件增强功能也可以次要发行版的形式提供。
    7. 请参阅下面的延长寿命阶段说明。
    8. 扩展更新支持(EUS)和扩展生命周期支持(ELS)可作为可选附件提供。请参阅下面的EUSELS说明。
    9. 仅适用于现有安装。有关其他限制,请参见下面的详细信息。
    10. 有关安全性严重性分类,请参见“ 问题严重性分类”页面。
    11. 所有勘误表均由Red Hat自行决定。
    12. 适用于RHEL主要版本5、6和7;不适用于RHEL 8。
    13. RHEL 8的维护支持与整个维护阶段的维护支持2等效。

    红帽企业Linux生产阶段

    完全支持阶段

    在全面支持阶段,合格的关键和重要安全勘误咨询(RHSA)以及紧急和选定的(紧急情况由Red Hat决定)高优先级漏洞修复勘误咨询(RHBA)可能会发布。其他勘误咨询可能会适当提供。

    如果有的话,通常在次要版本中,Red Hat可以酌情提供新的或改进的硬件支持以及选择的增强软件功能。红帽可自行决定不依赖次要发行版地提供不需要大量软件更改的硬件支持。

    次要版本还将包括可用的合格的勘误公告(RHSA,RHBA和RHEA)。次要版本是累积性的,包括以前发布的更新的内容。在此阶段中,较小版本的重点在于解决中等或更高优先级的缺陷。

    在完整支持阶段,将为次要版本提供更新的安装映像。

    维护支持1期v

    在维护支持1阶段,可能会发布合格的关键和重要安全勘误公告(RHSA)和紧急优先级错误修复勘误公告(RHBA)。其他勘误咨询可能会适当提供。

    如果可用,Red Hat可以酌情决定是否提供不需要大量软件更改的硬件支持(通常在次要版本中)。在此阶段,新软件功能不可用。

    次要发行版还将包括所有可用的合格勘误。次要版本是累积性的,因此包括以前发布的次要版本和勘误公告的内容,包括来自完全支持阶段的内容。在此阶段,较小版本的重点在于解决紧急或高优先级的错误。

    在维护支持1阶段中,Red Hat将酌情为次要发行版提供更新的安装映像,仅在由于安装程序更改而需要时才提供。

    维护支持阶段(RHEL 8)阶段/维护支持2阶段(RHEL 5,6,7)vi

    在Red Hat Enterprise Linux版本8的维护支持阶段和Red Hat Enterprise Linux版本5、6和7的维护支持2阶段中,红帽定义的关键和重要ix影响安全公告(RHSA)并已选择(在Red Hat中)酌情决定)可能会发布紧急优先级错误修复公告(RHBA)。其他勘误咨询可能会适当提供。

    不计划在维护支持(RHEL 8)阶段和维护支持2(RHEL 5、6、7)阶段提供新功能和新硬件支持。具有更新的安装映像的次要版本可能会在此阶段提供。

    延长使用寿命:

    在延长生命周期阶段,红帽企业Linux订阅可继续访问红帽客户门户网站上先前发布的内容以及其他内容,例如文档和红帽知识库。还可以提供有关迁移到当前支持的Red Hat Enterprise Linux版本的建议。

    对于处于延长寿命阶段的产品版本,Red Hat将提供有限的持续技术支持。在此阶段,将无法提供任何错误修复,安全修复,硬件启用或根本原因分析,并且仅在现有安装上提供支持。

    红帽保留随时终止对特定版本的红帽企业Linux的扩展生命周期中持续支持的权利。

    红帽企业版Linux 8生命周期

    红帽为红帽企业Linux客户,合作伙伴和ISV提供了进一步的可预测性。下图提供了有关计划何时发行次版本的详细信息,以及哪些次发行版本将包括扩展更新支持和SAP解决方案更新服务。次要版本计划在整个支持阶段每六个月发布一次。

    RHEL 8规划指南viii

    红帽企业Linux 8应用程序流生命周期

    红帽企业Linux 8版中的绝大多数软件包(包括大多数应用程序流)将在整个10年的红帽企业Linux 8生命周期中得到维护。但是,指定的生命周期组件将维护不到10年,并且指定的生命周期通常与组件的上游寿命匹配。

    Application Streams将遵循主要版本生产阶段的勘误标准。例如,在维护支持阶段为RHEL 8的应用程序流发布的勘误表将仅限于Red Hat定义的关键和重要ix影响安全公告(RHSA),并(由Red Hat自行决定)选择紧急优先级错误修复公告(RHBA)。 )。同样,由于软件增强功能5,在维护支持阶段和延长寿命阶段不会发布新的应用程序流。在这些阶段是不允许的。但是,为了达到RHEL的10年支持标准,将在维护支持阶段开始时确定每个应用程序流的一个版本,并且该版本将接受支持阶段所述的维护。

    例如,大多数数据库在上游获得5年的支持,并且在RHEL 8中对其模块流的维护将与其上游的支持保持一致。RHEL 8中将有重叠的PostgreSQL模块流,每个流保持5年。客户可以选择最能满足其需求的模块流。他们可以安装较旧的版本,安装较新的版本并保留整整5年的时间,或者在每个版本中更新到最适合其使用情况的最新版本。客户无需更新,他们可以在自己方便的时候进行更新。如果客户要求的支持超出模块流的指定寿命,则可能会要求他们转向较新的模块流以利用错误修复和CVE咨询服务。

    请参阅Red Hat Enterprise Linux 8应用程序流生命周期页面以获取更多信息。

    红帽企业Linux更长的支持附加组件

    扩展更新支持附件vii

    红帽提供扩展更新支持(EUS)附加到红帽企业Linux订阅对于那些谁愿意在一个特定的次要版本规范为长时间的客户。EUS附加组件使客户可以灵活地决定何时使用新的Red Hat Enterprise Linux功能,包括新的硬件支持。

    在Red Hat Enterprise Linux订阅下,将为当前活动的次要版本提供所有可用的RHSA和RHBA,直到下一个次要版本可用为止。相比之下,对于特定的次要发行版,EUS是由Red Hat定义的关键和重要ix影响RHSA 的独立,扩展流,并在该次要的发行版之后并并行提供(由Red Hat酌情选择)紧急优先RHBA到后续的次要版本。在此处查看RHEL 7随附的软件包列表。请参考下面的RHEL 8 EUS支持维护政策

    从发行版本开始,每个Red Hat Enterprise Linux EUS流都可以使用24个月。

    EUS没有在红帽企业Linux 7 ARM,红帽企业Linux 7功率LE(POWER9),或Red Hat企业版Linux为IBM System z的(结构A)提供。

    注意: x86-64 Red Enterprise Linux Server Premium订阅中包含EUS。可以购买EUS作为x86-64 Red Hat Enterprise Linux Server标准订阅的附件,用于IBM Power LE的Red Hat Enterprise Linux和用于IBM z Systems的Red Hat Enterprise Linux。RHEL服务器自助,RHEL桌面和RHEL工作站订阅不符合EUS附加组件的条件。

    在Red Hat Enterprise Linux 7中,EUS可用于以下版本:

    • 7.1(截至2017年3月31日)
    • 7.2(截至2017年11月30日)
    • 7.3(截至2018年11月30日)
    • 7.4(截至2019年8月31日)
    • 7.5(截至2020年4月30日)
    • 7.6(截至2020年10月31日)
    • 7.7(截至2021年8月30日; RHEL 7 EUS最终版本)

    在Red Hat Enterprise Linux 8中,计划将EUS用于RHEL 8.1、8.2、8.4、8.6和8.8(请参见上表)。

    • 8.1(截至2021年11月30日)

    请参阅此知识库文章,以获取有关EUS的更多详细信息。

    红帽企业版Linux 8扩展更新支持维护策略

    红帽的红帽企业Linux 8扩展更新支持维护策略包括解决(a)红帽企业Linux版本8中活动软件包的与安全相关的问题,以及(b)指定软件包列表的紧急错误,如下所述。

    安全维护

    • 只要Red Hat Enterprise Linux中的软件包没有生命周期结束,它就可以为Red Hat定义的软件包中的Red Hat定义的Critical和Important CVE提供安全修复程序。
    • 与特定的RHEL次要版本相比,RHEL 8 Application Streams中的软件包的生命周期可能更短。
      • 请参阅“应用程序流生命周期”部分以了解更多详细信息
    • 根据Red Hat Enterprise Linux生命周期策略,该策略仅适用于当前活动的次要版本。
    • 关键和重要影响CVE的定义由Red Hat安全策略定义

    错误修复维护

    • 以下包含列表是适用于紧急错误修复的最小软件包集合。
      • 绑定,bash,chrony,grub2,grubby,glibc,gnutis,内核,libgcrypt,libvirt,nss,openssh,openssl,python 3.6,qemu-kvm,rpm,sudo,systemd,wget,yum / dnf
    • Red Hat可酌情解决未列出的紧急错误。
    • 根据Red Hat Enterprise LInux生命周期策略,该策略仅适用于当前活动的次要版本。

    注意:活动的次要版本是指维护特定次要版本的时间。例如,带有EUS的RHEL 8.1从正式发布之日起有效24个月。

    SAP解决方案附加组件的更新服务

    对于那些希望长时间使用特定次要版本进行标准化的客户,红帽在Red Hat Enterprise Linux for SAP解决方案订阅中提供SAP解决方案更新服务。SAP解决方案更新服务使客户可以灵活地决定何时使用新的Red Hat Enterprise Linux功能,包括新的硬件支持。

    在Red Hat Enterprise Linux订阅下,将为当前活动的次要版本提供所有可用的RHSA和RHBA,直到下一个次要版本可用为止。相比之下,SAP解决方案的EUS和更新服务针对特定的次要版本,提供了独立的,扩展的,由Red Hat定义的 Critical and Important ix影响RHSA 的独立扩展流,并(由Red Hat自行决定)选择了紧急优先RHBA,这些RHBA特定次要版本,并与后续次要版本同时发布。对于EUS和更新服务SAP解决方案的用户,红帽通常将继续积极提供红帽定义的关键和重要IX如果有的话,独立于客户的请求影响RHSA。在此处查看RHEL 7随附的软件包列表。请参考上面的RHEL 8 EUS支持维护政策

    从次要版本发布开始,每个用于SAP解决方案的Red Hat Enterprise Linux更新服务流都将在48个月内可用。

    注意: RHEL 8.0上的SAP解决方案更新服务在2020年5月31日之前可用,以使客户可以更轻松地迁移到SAP解决方案的RHEL 8的更高版本。

    对于用于SAP解决方案的Red Hat Enterprise Linux,适用于以下版本的SAP解决方案更新服务:

    • 7.2(截至2019年11月30日)
    • 7.3(截至2020年11月30日)
    • 7.4(截至2021年8月31日)
    • 7.6(截至2022年10月31日)
    • 7.7(2023年8月30日结束; SAP解决方案版本的最终RHEL 7更新服务)
    • 8.0(截至2020年5月31日)
    • 8.1(截至2023年11月30日

    适用于SAP解决方案的更新服务的将来的Red Hat Enterprise Linux 8版本将在获得SAP认证后添加到以上列表中。

    扩展的生命周期支持附加组件:

    扩展生命周期支持(ELS)是某些Red Hat Enterprise Linux订阅的可选附加订阅。ELS附加组件可在Red Hat Enterprise Linux 5和6的扩展生命周期中使用,它提供了某些严重影响安全性的修复程序,并针对Redis发行版的次要版本选择了(由Red Hat自行决定)紧急优先级的错误修复程序和故障排除程序。对于Red Hat Enterprise Linux 5,ELS附加组件涵盖了IBM z Systems和x86架构,除了Itanium架构外,都包含32位和64位版本。对于Red Hat Enterprise Linux 6,ELS附件涵盖32位和64位版本的IBM z Systems和x86体系结构。ELS不涵盖附加组件。

    有关如何通过满足您业务需求的解决方案最佳地现代化Red Hat基础架构的指导,请联系Red Hat Consulting。请在此处查看ELS中包含的软件包列表

    注意:只有RHEL Server的标准或高级订阅才有资格获得ELS支持。RHEL Desktop或RHEL Workstation订阅不符合ELS的条件

    虚拟化

    虚拟化为来宾操作系统提供硬件抽象。通过抽象,可以将运行不支持最新服务器硬件的较旧版本的Red Hat Enterprise Linux的客户机轻松地部署在具有此功能的虚拟化主机上。这样,红帽企业版Linux 6客户机可以由红帽企业版Linux 6托管在最新一代的处理器上。

    当在更高版本的Red Hat Enterprise Linux上作为虚拟客户机运行时,Red Hat打算支持仍处于生产或延长生命周期阶段的那些版本的Red Hat Enterprise Linux。

    红帽企业Linux虚拟化支持矩阵提供有关操作系统,版本和硬件架构的支持组合的详细信息。

    生命周期日期

    提及的“完全支持终止”和“维护支持终止1”的所有将来的日期都是近似的,不确定的且随时可能更改。

    退休生命周期日期

    要查看不再接受维护更新的较旧的主要,次要和较长支持附件版本的生命周期日期,请参阅https://access.redhat.com/articles/4038291

    其他相关产品

    有关Red Hat Software Collections生命周期的信息,请访问https://access.redhat.com/site/support/policy/updates/rhscl/

    有关Red Hat Enterprise Linux Extras生命周期的信息,请访问https://access.redhat.com/site/support/policy/updates/extras/

    有关Red Hat Enterprise Linux for Real Time生命周期的信息,请访问https://access.redhat.com/support/policy/updates/realtime

    1. 一世。主要版本用整数表示,例如Red Hat Enterprise Linux 6。
    2. ii红帽发布了这个生命周期,以努力提供尽可能高的透明度,尽管保留了在发生冲突时从这些政策中排除例外的权利。
    3. iii可以通过Red Hat Customer Portal访问Red Hat Network(RHN)。
    4. iv全面支持阶段以前称为“生产1”阶段。
    5. v维护支持1阶段以前称为“生产2”阶段。
    6. vi维护支持2阶段以前称为“生产3”阶段。
    7. 七。有关EUS附加组件的详细信息,请参阅https://access.redhat.com/node/4082531
    8. 八。生命周期的时间跨度和日期可能会有所调整。
    9. ix适用于2019年10月1日或之后发生的重要CVE

     

    展开全文
  • SpringIoc容器管理的Bean默认都是单例设计模式的,即每Bean只有一实例化的Bean对象存在于SpringIoc容器中,因此SpringIoc容器需要负责管理Bean的生命周期。 分类 Bean 的生命周期可以分为以下四类, (1)...

    引言

    SpringIoc容器管理的Bean默认都是单例设计模式的,即每个Bean只有一个实例化的Bean对象存在于SpringIoc容器中,因此SpringIoc容器需要负责管理Bean的生命周期。

    分类

    Bean 的生命周期可以分为以下四类,
    (1)Bean 的自身方法
    (2)Bean生命周期接口方法
    (3)容器级生命周期接口方法
    (4)工厂后处理器接口方法

    Spring生命周期各个阶段相关接口及方法
    Bean 的自身方法Bean本身业务的方法。 配置文件中init-method和destroy-method指定的方法
    Bean生命周期接口方法InitializingBean接口,DiposiableBean接口,BeanNameAware接口 ,ApplicationContextAware接口,BeanFactoryAware接口等等
    容器级生命周期接口方法InstantiationAwareBeanPostProcessor接口实现,BeanPostProcessor接口实现
    工厂后处理器接口方法AspectJWWeavingEnabler ConfigurationClassPostProcessor,CustomAutowireConfigurer等

    Bean 的自身方法及Bean生命周期接口方法

    设计一个BeanLifeCycle类,继承相关接口

    package com.Bean生命周期;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.BeanNameAware;
    import org.springframework.beans.factory.DisposableBean;
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    
    /**
     * Author:haozhixin
     * Func: Bean的生命周期
     * Date: 2019-08-05
     */
    public class BeanLifeCycle implements BeanNameAware,ApplicationContextAware,InitializingBean,DisposableBean{
    	/*
    	* 构造器
    	*
    	*/
    	public BeanLifeCycle(){
    		System.out.println("1.[Bean级别]构造器执行了");
    	}
    	/*
    	* BeanNameAware接口方法实现
    	*
    	*/
    	@Override
    	public void setBeanName(String name){
    		System.out.println("2.[Bean级别]setBean方法执行了]");
    	}
    
    	/*
    	* ApplicationContextAware接口方法实现
    	*
    	*/
    	@Override
    	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
    		System.out.println("3.[Bean级别]setApplicationContext方法执行了]");
    	}
    	/*
    	* InitializingBean接口方法实现
    	*
    	*/
    	@Override
    	public  void afterPropertiesSet() throws  Exception{
    		System.out.println("4.[Bean级别]afterPropertiesSet方法执行了]");
    	}
    	/*
    	* init-method属性指定的方法
    	*
    	*/
    	public void lifeCycleInit(){
    		System.out.println("5.[Bean级别]lifeCycleInit方法执行了]");
    	}
    	/*
    	* bean中的业务方法
    	*
    	*/
    	public void sayHello(){
    		System.out.println("6.[Bean级别]syHello方法执行了]");
    	}
    	/*
    	* DisposableBean接口方法实现
    	*
    	*/
    	@Override
    	public void destroy() throws Exception {
    		System.out.println("7.[Bean级别]destroy方法执行了]");
    	}
    	/*
    	* destroy-method属性指定的方法
    	*
    	*/
    	public void lifeCycleInitDestroy(){
    		System.out.println("8.[Bean级别]lifeCycleInitDestroy方法执行了]");
    	}
    }
    
    

    bean_life_cycle.xml配置方法

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <bean id="BeanLifeCycle" class="com.Bean生命周期.BeanLifeCycle" scope="singleton" init-method="lifeCycleInit" destroy-method="lifeCycleInitDestroy">
    
        </bean>
    </beans>
    

    测试类的写法

    import com.Bean生命周期.BeanLifeCycle;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    /**
     * Author:haozhixin
     * Func: Bean的生命周期
     * Date: 2019-08-05
     */
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:bean_life_cycle.xml")
    public class BeanLifeCycleTest {
    	@Autowired
    	private BeanLifeCycle beanLifeCycle;
    	@Test
    	public void test(){
    		beanLifeCycle.sayHello();
    	}
    }
    
    

    测试结果:

    1.[Bean级别]构造器执行了
    2.[Bean级别]setBean方法执行了]
    3.[Bean级别]setApplicationContext方法执行了]
    4.[Bean级别]afterPropertiesSet方法执行了]
    5.[Bean级别]lifeCycleInit方法执行了]
    6.[Bean级别]syHello方法执行了]
    7.[Bean级别]destroy方法执行了]
    8.[Bean级别]lifeCycleInitDestroy方法执行了]
    

    我们可以看到执行顺序,即Bean自身方法和Bean声明周期接口方法生命周期为:
    Ioc容器–>Bean构造器->BeanNameAware->ApplicationContextAware–>InitializingBean->init-method->Bean中的业务方法->DisposableBean->destroy-method方法。

    容器级生命周期接口方法的执行次序

    容器级接口方法一般有InstantiationAwareBeanPostProcessor和BeanPostProcessor两个接口,一般也将其实现类称为后处理器。容器级生命周期接口的实现独立于SpringIoc容器中的Bean,其是以容器拓展的形式注册到Spring中的。无论SpringIoc管理任何的Bean,这些后处理器都会发生作用。因此后处理器的影响范围是全局的SpringIoc容器中的Bean。用户可以通过编写合理的后处理器来实现自己对Bean的加工逻辑。

    • BeanPostProcessor:可以对Bean的属性进行更改
    • InstantiationAwareBeanPostProcessor:此接口可以在bean的实例化之前,之后操作,也可以在实例化之后进行属性操作
    • InstantiationAwareBeanPostProcessorAdapter:适配器类

    代码实现:

    package com.Bean生命周期;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.PropertyValues;
    import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter;
    
    import java.beans.PropertyDescriptor;
    
    /**
     * Author:haozhixin
     * Func:
     * Date:
     */
    public class ContainerLifeCycle extends InstantiationAwareBeanPostProcessorAdapter{
    	/***
    	 * 构造器
    	 */
    	public ContainerLifeCycle(){
    		System.out.println("a.[容器级别]ContainerLifeCycle构造器执行了");
    	}
    
    	/***
    	 *接口方法和实例化bean之前调用
    	 */
    	@Override
    	public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {
    		System.out.println("b.[容器级别]postProcessBeforeInstantiation执行了,beanClass:"+beanClass);
    		return null;
    	}
    
        /***
         *设置某个属性时调用
         */
    	@Override
    	public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException {
    		System.out.println("c.[容器级别]postProcessPropertyValues执行了,beanName:"+beanName);
    		return pvs;
    	}
    
    
    	/***
    	 *接口方法和实例化Bean之后调用
    	 */
    	@Override
    	public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
    		System.out.println("d.[容器级别]postProcessAfterInstantiation执行了,beanClass:"+bean.getClass());
    		return true;
    	}
    
    
    }
    
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <bean id="ContainerLifeCycle" class="com.Bean生命周期.ContainerLifeCycle" scope="singleton" >
    
        </bean>
    </beans>
    
    
    import com.Bean生命周期.BeanLifeCycle;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    /**
     * Author:haozhixin
     * Func: Bean的生命周期
     * Date: 2019-08-05
     */
    public class ContainerLifeCycleTest {
    	public static void main(String [] args){
    		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:bean_life_cycle.xml","classpath:container_life_cycle.xml");
    		BeanLifeCycle beanLifeCycle = context.getBean("BeanLifeCycle",BeanLifeCycle.class);
    		beanLifeCycle.sayHello();
    		context.close();
    	}
    }
    
    

    运行结果:

    a.[容器级别]ContainerLifeCycle构造器执行了
    b.[容器级别]postProcessBeforeInstantiation执行了,beanClass:class com.Bean生命周期.BeanLifeCycle
    1.[Bean级别]构造器执行了
    d.[容器级别]postProcessAfterInstantiation执行了,beanClass:class com.Bean生命周期.BeanLifeCycle
    c.[容器级别]postProcessPropertyValues执行了,beanName:BeanLifeCycle
    2.[Bean级别]setBean方法执行了]
    3.[Bean级别]setApplicationContext方法执行了]
    4.[Bean级别]afterPropertiesSet方法执行了]
    5.[Bean级别]lifeCycleInit方法执行了]
    6.[Bean级别]syHello方法执行了]
    7.[Bean级别]destroy方法执行了]
    8.[Bean级别]lifeCycleInitDestroy方法执行了]
    

    工厂级生命周期接口代码实现

    话不多说,直接上代码

    package com.Bean生命周期;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.BeanNameAware;
    import org.springframework.beans.factory.DisposableBean;
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    
    /**
     * Author:haozhixin
     * Func: Bean的生命周期
     * Date: 2019-08-05
     */
    public class FactoryLifeCycle implements BeanFactoryPostProcessor{
    	/*
    	* 构造器
    	*
    	*/
    	public FactoryLifeCycle(){
    		System.out.println("一.[工厂级别]构造器执行了");
    	}
    
    	@Override
    	public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    		System.out.println("二.[工厂级别]postProcessBeanFactory方法执行了");
    	}
    }
    
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <bean id="FactoryLifeCycle" class="com.Bean生命周期.FactoryLifeCycle" scope="singleton" >
    
        </bean>
    </beans>
    
    import com.Bean生命周期.BeanLifeCycle;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * Author:haozhixin
     * Func: Bean的生命周期(工厂级别,bean级别,容器级别)
     * Date: 2019-08-05
     */
    public class FactoryLifeCycleTest {
    	public static void main(String [] args){
    		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:bean_life_cycle.xml","classpath:container_life_cycle.xml","classpath:factory_life_cycle.xml");
    		BeanLifeCycle beanLifeCycle = context.getBean("BeanLifeCycle",BeanLifeCycle.class);
    		beanLifeCycle.sayHello();
    		context.close();
    	}
    }
    
    

    执行结果是:

    一.[工厂级别]构造器执行了
    二.[工厂级别]postProcessBeanFactory方法执行了
    a.[容器级别]ContainerLifeCycle构造器执行了
    b.[容器级别]postProcessBeforeInstantiation执行了,beanClass:class com.Bean生命周期.BeanLifeCycle
    1.[Bean级别]构造器执行了
    d.[容器级别]postProcessAfterInstantiation执行了,beanClass:class com.Bean生命周期.BeanLifeCycle
    c.[容器级别]postProcessPropertyValues执行了,beanName:BeanLifeCycle
    2.[Bean级别]setBean方法执行了]
    3.[Bean级别]setApplicationContext方法执行了]
    4.[Bean级别]afterPropertiesSet方法执行了]
    5.[Bean级别]lifeCycleInit方法执行了]
    6.[Bean级别]syHello方法执行了]
    7.[Bean级别]destroy方法执行了]
    8.[Bean级别]lifeCycleInitDestroy方法执行了]
    

    好了,就这么多,大家如果有疑问可以去Spring5企业级开发实战(五)下载以下源代码。


    作者:select you from me
    来源:CSDN
    转载请联系作者获得授权并注明出处。

    展开全文
  • 1、中国快递行业生命周期理论假设 基于传统行业生命周期理论以及“S曲线”理论,长江交运团队提出“中国快递生命周期”这一理论假设:中国快递将依次经历完全竞争、龙头竞争以及寡头 竞争共三轮生命周期。完全竞争...
  • 基于全生命周期的思想,从设备的企业计划、采购、使用到最终的报废四个方面构建了基于Web的全生命周期设备管理系统;在该系统中通过严格规范的编码方法对设备做到惟一的追踪,实现设备全生命周期中信息的一致性、...
  • 为了稍稍区别于一般产品生命周期包含的“引进”“成长”“成熟”“衰退”四个阶段,我这里把互联网产品的生命周期分为以下四个阶段,如图所示:对于互联网产品来说,启动阶段就相当于一个企业的初创阶段,在
  • PMP —— 项目完整生命周期

    千次阅读 2019-07-21 18:25:49
    文章目录PMP —— 项目完成生命周期前言一张图项目管理(以前端角度看)角色介绍注意事项详细流程项目立项编写需求...在网上看资料的时候,看到一篇不错的文档,简单介绍了一项目的生命周期,把它记下来。 一张图...
  • 分享电商用户生命周期价值知识

    千次阅读 2019-07-05 18:24:43
    618购物节在即,剁手党们已经迫不及待,大大小小的电商平台也开始早早策划筹备活动...生命周期指的是一主体从产生到结束的发展过程。网站用户的生命周期可以理解为用户从认识网站到喜欢网站到与网站关系破裂的整个...
  • 如何搭建用户生命周期模型?

    千次阅读 2019-07-02 14:20:04
    根据上图可知,用户的生命周期主要分为5阶段:导入期、成长期、成熟期、休眠期、流失期。 关于如何判断自己的用户处于生命周期的哪个阶段,上一篇文章已经提到了。那么,当我们已经知道了自己的用户处在什么生命...
  • 产品生命周期战略

    千次阅读 2019-07-16 17:21:02
    企业不能期望他的产品永远地畅销,因为一种产品在市场上的销售情况和获利能力并不是一成不变的,而是随着时间的推移发生变化,这种变化经历了产品的诞生、成长、成熟和衰退的过程,就象生物的生命历程一样,所以称之...
  • 1.项目生命周期的阶段之间可能相互交叉,而产品生命周期的阶段通常不相互交叉; 项目生命周期:项目初始->项目计划->项目执行控制->项目结束; 产品生命周期:投入期->成长期->饱和期->衰退期; ....
  • TiPLM---产品全生命周期管理系统

    千次阅读 2019-08-26 16:27:22
    信息化时代,现代化大中型企业,迎来了数据统一化整合、产品全生命周期管理的重要机遇与挑战,信息化变革,对提升企业管理效率、提高产品制造质量具有举足轻重的意义。中车信息技术有限公司(原北京清软英泰信息技术...
  • 关于用户生命周期分析的总结

    千次阅读 2020-04-21 11:36:02
    通常情况下,我们将用户的生命周期划分为以下五阶段:引入期、成长期、成熟期、休眠期、流失期。我们在进行生命周期的划分时候要根据自己所在的行业情况来进行划分,依据不同的行业情况来划分相应的阶段。 2.在用户...
  • 产品生命周期管理(PLM)

    千次阅读 2020-11-18 23:03:10
    产品生命周期管理(PLM) ...2.1产品生命周期管理(PLM)的应用需求 PLM软件的集成应用是一项复杂的系统工程,涉及到软件开发的成熟度、企业的实际需求。制造企业是目前PLM应用的主体,分析制造企业的信息化现状...
  • 知识图谱生命周期及工具

    万次阅读 2020-01-13 23:52:36
      从行业知识图谱的全生命周期来看,可以分为知识建模,知识获取,知识融合,知识存储,知识计算和知识应用6部分。 1.1 知识建模   知识建模即建立知识图谱的模式层(也称本体层、动态本体层),行业知识图谱...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    值传递 当一对象被当作参数传递到一方法后,此方法可改变这对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 为什么 Java 中只有值传递 值传递和引用传递有什么区别 Java包 JDK 中常用的...
  • 技术采用生命周期理论

    千次阅读 2020-09-23 14:22:21
    技术采用生命周期,就是新技术推向市场时,必然会面临的 5 阶段。这 5 阶段,也对应着截然不同的消费者。 第一阶段,面对的是创新者 他们愿意尝试各种新鲜事物,对新科技天生有着好奇和狂热。但这部分人极少...
  • Spring Bean 的生命周期

    万次阅读 多人点赞 2018-08-05 11:30:20
    目录 一、BeanFactory实例化Bean相关接口 ...、ApplicationContext的Bean生命周期 五、ApplicationContext的Bean生命周期代码演示 六、总结 Spring的生命周期是指实例化Bean时所经历的一系列阶段,即通过getBe...
  • xamarin Android activity生命周期详解

    千次阅读 2016-10-02 23:30:25
    两分钟彻底让你明白Xamarin Android Activity生命周期,详解Xamarin android activity忘都忘不掉
  • 如何确定产品生命周期

    千次阅读 2017-07-11 07:50:38
    常见网络产品个人觉得暂且可以分为三类: 一、是互联网基础设备,如路由器、交换机等...产品的生命周期,指的就是产品的引入、成长、成熟和衰退的过程,其实对应着人的生命,少年、青壮年、中年、老年。产品进人和退出
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 博主已将以下这些面试题整理成了一Java面试手册,是PDF版...
  • 服装产品的生命周期

    万次阅读 2013-05-09 17:07:37
    服装产品的生命周期又称产品市场的寿命周期,它是指一种(或一系列的)服装产品从计划、设计、研制、生产、包装、储运、投入市场开始销售,到试销、推销、倾销,直到最后被淘汰出市场所经历的一段时间。
  • 上一篇{}中,有很多同学留言想看用户生命周期的分析,今天它来了。用户生命周期管理,是系统化运营和拍脑袋运营的重要区别。不做系统化设计,就会沦陷为无脑烧钱的傻大粗。然而用户...
  • 数据分析 -- 电商用户生命周期分析

    千次阅读 2020-05-25 12:12:57
    本文来源于叶同学投稿,是最近他关于用户生命周期这一块的学习整理,也欢迎大家给我投稿分享~CRMCustomer RelationShip Management 客户关系管理:要求企业站...
  • 软件生命周期模型及其选择

    千次阅读 2018-09-11 17:28:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • 信息系统开发方法-生命周期

    千次阅读 2020-06-29 21:35:14
    生命周期法就是按照信息系统生命周期的各个阶段划分任务,且每阶段有相对独立的任务,然后按一定的规则和步骤,有效地进行信息系统开发的方法。 生命周期按阶段划分,提出的是组织、管理和控制信息系统开发过程的一...
  • 选取沪深两地68家通讯行业上市公司2011—2013年数据为样本,将企业视为一个生命体,从企业学习力特性、企业新陈代谢特性、企业成长性和企业抗危机能力特性等四个方面建立企业生命特征综合性评价指标模型,运用主成分...
  • 信息系统生命周期

    千次阅读 2019-04-22 10:41:16
    企业的环境、目标及现行系统的状况进行初步调查, 根据企业目标和发展战略,确定信息系统的发展战略, 对建设新系统的需求做出分析和预测, 同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。 ...
  • 产品的生命周期分为起步期、发展期、成熟期和衰退期(见下图),不同时期的产品价值和意义有所不同。产品在起步期如初生的婴儿,如果有良好的环境就会茁壮成长,但这时期的产品也要不断调整和升级以适应外部环境;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,357
精华内容 26,142
关键字:

企业的四个生命周期