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");
}
}

 

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM