zoukankan      html  css  js  c++  java
  • springBoot 手动注入Bean

    1.创建一个DefinitionRegistryPostProcessor :

    package com..aop_mybatis;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.beans.factory.support.BeanDefinitionRegistry;
    import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
    import org.springframework.beans.factory.support.RootBeanDefinition;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class DefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {
        @Override
        public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0)throws BeansException {
    
        }
    
        /**
         * 先执行postProcessBeanDefinitionRegistry方法
         * 在执行postProcessBeanFactory方法
         */
        @Override
        public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
                throws BeansException {
            // 第一种 : 手动注入
            // 注册bean
            registerBean(registry, "hello", HelloWord.class);
            registerBean(registry, "helloWord", HelloWord.class);
        }
        /**
         注册bean
         **/
        private void registerBean(BeanDefinitionRegistry registry, String name, Class<?> beanClass) {
            RootBeanDefinition bean = new RootBeanDefinition(beanClass);
            registry.registerBeanDefinition(name, bean);
        }
    }

    2.测试能否在spring上下文获取该bean:

    @SpringBootApplication
    public class ApplicationBoot {
        public static void main(String[] args) {
            ApplicationContext applicationContext = SpringApplication.run(ApplicationBoot.class);
            HelloWord helloWord = applicationContext.getBean("hello", HelloWord.class);
            System.out.println(helloWord.say());
        }
    }


    3.测试类:

    package com..aop_mybatis;
    
    public class HelloWord {
    
    public void say() {
    System.out.println("111");
    }
    }

    结果:

  • 相关阅读:
    线程的取消/撤销 (转)
    Linux 3.0发布有感(转)
    Linux下挂载与解除挂载U盘
    Ubuntu 中文编码设置
    Linux Kernel 3.0新特性概览(转)
    pthread_cond_wait()用法分析
    brk和sbrk及内存分配函数介绍
    [转]Vmware ESX 4上虚拟机 Redhat 5.2(CentOS 5.2)启动在Starting udev 停几个小时
    [贺]通过Oracle 10g OCP的三门考试
    [原]Oracle外部表结合游标完成统计一例
  • 原文地址:https://www.cnblogs.com/lifan12589/p/14252380.html
Copyright © 2011-2022 走看看