Spring定制入口

Spring容器一览图

Caption

定制入口:

           在Spring容器启动过程中,给个性化定制容器提供了扩展入口。


    定制原始Bean:
        方式一: 不推荐使用,引起耦合,将应用代码和Spring耦合在一起了。
            实现回调接口
              InitializingBean DisposableBean

        方式二:
            配置文件指定初始化方法和销毁Bean方法,配置文件属性。
            init-method  destroy-method

        方式三:
           使用注解
           @PostConstruct @PreDestroy

        方式四:
           应用中的bean使用同一的名称命名声明周期方法,统一名称为init() initialize() destory() ,而后配置Spring容器扫描此类命名的方法,达到统一配置的目的,避免了每个Bean都配置。 即在配置文件<Beans default-init-method="init" default-destroy-method="destory">处配置。 可以在单独的<Bean init-method="doInit">覆盖统一的方法。

     这些回调方法的调用,Spring内部是使用BeanPostProccessor来实现注入调用。可以自己通过定制BeanPostProccessor来扩展自己想要的功能。         

    容器声明周期回调:
        实现Lifecycle接口,Spring容器在启动过程中,当触发到某个声明周期,他就会调用所有Lifecycle的实现,调用对应的声明周期回调方法。这里能力在Spring内部是通过LifecyleProcessor来实现的。

    容器注册shutdown Hook
         shutdownHook会调用容器shutdown钩子,实施容器销毁动作,只有注册了这个hook,一些声明周期才能执行。

    实现各种Aware接口:
        ApplicationContextAware BeanNameAware ApplicationEventPublisherAware BeanClassLoaderAware BeanFactoryAware BootstrapContextAware LoadTimeWeaverAware MessageSourceAware NotificationPublisherAware
            ResourceLoaderAware ServletConfigAware ServletContextAware 通过定制这些aware接口,可以在容器启动过程中做你想做的事情。

    定制BeanPostProcessor

           通过实现BeanPostProcessor的回调方法,你可以提供自己的Bean的实例化逻辑,依赖解析逻辑,等等。如果您希望在Spring容器完成实例化、配置和初始化bean之后实现一些自定义逻辑。您可以插入一个或多个自定义BeanPostProcessor实现。

           下图展示了容器内部的一些自带的BeanFactoryPostProcessor,可以参考他们做自己的自定义实现。

    定制BeanFactoryPostProcessor

           通过实现BeanFactoryPostProcessor的回调方法,可以操控bean配置的元数据。Spring IoC容器允许BeanFactoryPostProcessor读取配置元数据,并可能在容器实例化除BeanFactoryPostProcessor实例之外的任何bean之前更改它。Spring容器上可以注册多个BeanFactoryPostProcessor,他可以是优先级,通过标识@Order注解。

          下图展示了容器内部的一些自带的BeanFactoryPostProcessor,可以参考他们做自己的自定义实现。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值