<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          BeanDefinitionRegistryPostProcessor接口學(xué)習(xí)

          共 2211字,需瀏覽 5分鐘

           ·

          2021-07-22 14:14

          之前我們學(xué)習(xí)過SpringBoot得工廠后置處理器得排序注冊得文章,https://mp.weixin.qq.com/s/VXHd98g7CW6VcngMitzXHw。
          當(dāng)時說BeanDefinitionRegistryPostProcessor接口提供了方法postProcessBeanDefinitionRegistry,而其父類BeanFactoryPostProcessor提供了方法postProcessBeanFactory,這兩者都是在beanfactory得后置處理器。但是前者得執(zhí)行順序要高于后者,當(dāng)然針對具體得后置處理器,還可以添加優(yōu)先級,因為在執(zhí)行之前,spring會對其進行排序。

          了解了上述過程,我們來寫個demo,來手動實現(xiàn)將一個毛坯Bean注冊到我們得BeanDefinitionRegistry中去。
          測試類:
          public class Tian implements InitializingBean {

          private String name;



          public String getName() { return name; }

          public void setName(String name) { this.name = name; }

          @Override public String toString() { return "Tian{" + "name='" + name + '\'' + '}'; }

          @Overridepublic void afterPropertiesSet() throws Exception {//可以在這里進行二次得屬性填充工作...一般高級開發(fā)會在這里實例化真正和核心得一些類。 System.out.println("這里做一些后置得填充...."); }}

          后置注冊類:
          @Componentpublic class MyBeanDefinitionRegistry implements BeanDefinitionRegistryPostProcessor {    /**     * 前置注冊方法     * @param beanDefinitionRegistry     * @throws BeansException     */    @Override    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {        AbstractBeanDefinition definition= BeanDefinitionBuilder.rootBeanDefinition(Tian.class).getBeanDefinition();        MutablePropertyValues mpv = new MutablePropertyValues();        mpv.addPropertyValue("name","tianjingle");        definition.setBeanClass(Tian.class);//填充屬性        definition.setPropertyValues(mpv);        beanDefinitionRegistry.registerBeanDefinition("tian",definition);    }

          /** * 后置處理器方法 * @param configurableListableBeanFactory * @throws BeansException */ @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { }}

          在手動注冊了好我們得bean之后,我們就可以直接使用了。
          @Autowiredprivate Tian tianjingle;
          小節(jié):有時候我們想通過通過一個簡單得信息來獲取其他信息,bean基于此信息來管理這些類得時候,在spring中我們可以采用接口BeanDefinitionRegistryPostProcessor手動注冊bean到我們得spring后置注冊器中。在注冊得時候我們可以將貫穿其中得唯一消息作為參數(shù)傳入,并在此類初始化得時候真正得進行定制化操作。這里我們可以使用接口InitializingBean。




          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  波多野结衣操逼 | 国产91女技师一区二区三区 | 日韩尤物在线播放 | 激情五月丁香小说 | 亚洲热热热 |