博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring 手动 注入 销毁 bean
阅读量:7101 次
发布时间:2019-06-28

本文共 3984 字,大约阅读时间需要 13 分钟。

hot3.png

package spring;import org.springframework.beans.factory.config.BeanDefinition;import org.springframework.beans.factory.support.BeanDefinitionBuilder;import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.beans.factory.support.DefaultListableBeanFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.tiger.demohystrixconfig.test.Configer;import org.tiger.demohystrixconfig.test.HystrixCommandServiceImpl;import org.tiger.demohystrixconfig.test.MyException;import org.tiger.demohystrixconfig.test.Service;/** * springApplicationContext工具 */public class SpringBeanRegisterUtil {    private static ApplicationContext context=new            ClassPathXmlApplicationContext("classpath:spring/applicationConfig.xml");    private static ConfigurableApplicationContext configurableContext = (ConfigurableApplicationContext) context;    private static BeanDefinitionRegistry beanDefinitionRegistry = (DefaultListableBeanFactory) configurableContext.getBeanFactory();            static{    	System.out.println("SpringBeanRegisterUtil>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.");    }    /**     * 注册bean     * @param beanId 所注册bean的id     * @param className bean的className,     *                     三种获取方式:1、直接书写,如:com.mvc.entity.User     *                                   2、User.class.getName     *                                   3.user.getClass().getName()     */    public static void registerBean(String beanId,String className) {        // get the BeanDefinitionBuilder        BeanDefinitionBuilder beanDefinitionBurinilder =        BeanDefinitionBuilder.genericBeanDefinition(className);        // get the BeanDefinition        BeanDefinition beanDefinition=beanDefinitionBurinilder.getBeanDefinition();        // register the bean        beanDefinitionRegistry.registerBeanDefinition(beanId,beanDefinition);    }        /**     * 注册bean     * @param beanId 所注册bean的id     * @param className bean的className,     *                     三种获取方式:1、直接书写,如:com.mvc.entity.User     *                                   2、User.class.getName     *                                   3.user.getClass().getName()     */    public static void registerBean(BeanDefinition beanDefinition,String beanId) {        // get the BeanDefinition        // register the bean        beanDefinitionRegistry.registerBeanDefinition(beanId,beanDefinition);    }        /**     * 移除bean     * @param beanId bean的id     */    public static void unregisterBean(String beanId){        beanDefinitionRegistry.removeBeanDefinition(beanId);    }    /**     * 获取bean     * @param name bean的id     * @param 
* @return */ public static
T getBean(String name) { return (T) context.getBean(name); } public static void main(String[] args) { System.out.println("==============================================="); Service service = SpringBeanRegisterUtil.getBean("hystrixCommandServiceImpl"); System.out.println("===================="+service); registerBean("MyException", "org.tiger.demohystrixconfig.test.MyException"); MyException myException = SpringBeanRegisterUtil.getBean("MyException"); System.out.println("===================="+myException.hashCode()+"==========="+myException.config); myException = SpringBeanRegisterUtil.getBean("MyException"); System.out.println("===================="+myException.hashCode()+"==========="+myException.config); Configer.val = "1231aaaa231231231233"; //unregisterBean("MyException"); registerBean("MyException", "org.tiger.demohystrixconfig.test.MyException"); myException = SpringBeanRegisterUtil.getBean("MyException"); System.out.println("===================="+myException.hashCode()+"==========="+myException.config); }}

 

转载于:https://my.oschina.net/xiaominmin/blog/1599947

你可能感兴趣的文章
Jira 6.3.6使用openldap进行认证——方法一
查看>>
项目经理成长日记(10)——百万大侠,能否推敲
查看>>
oracle之 SYSAUX表空间维护
查看>>
thinkphp-条件判断-范围判断-in与else
查看>>
搜狗智能联想输入法,背后的运维又是如何智能的?
查看>>
就绪IT平台 走进智能企业——智能化浪潮中的领军者大型系列报道
查看>>
Shader的函数公式以及使用的场景
查看>>
3Python全栈之路系列之D
查看>>
js self = this的解释
查看>>
用jekyll制作高大上的网站(一)——安装与配置
查看>>
linux基础--vim编辑器
查看>>
前端网络、JavaScript优化以及开发小技巧
查看>>
nbd网络块设备使用教程
查看>>
gbk与utf-8字符串无乱码截取
查看>>
Linux学习之CentOS(三)--初识linux的文件系统以及用户组等概念
查看>>
linux下varnish4安装
查看>>
聊聊php定时计划任务
查看>>
python系统编码-稍后更新
查看>>
lvs-nat,https
查看>>
旧电脑如何华丽变身专业上网行为管理设备!
查看>>