• java在应用中获取spring定义的bean


         因为写了些bean作为quartz的任务用spring配置了,但有些时候需要在别的类中使用这些bean,没有太仔细去研究spring,依稀记得有个getBean,到网上g了一把,发现方法不止一种,选了一种最简单的方法:

         主要思路是使用静态变量保存全局的应用上下文,在spring框架中配置,框架加载时会把全局上下文实例传入。

         1、新建继承ApplicationContextAware的类:

    package com.test;

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;

    public class SpringUtil implements ApplicationContextAware {
        
    private static ApplicationContext applicationContext;
        @Override
        
    public void setApplicationContext(ApplicationContext arg0)
            
    throws BeansException {
            SpringUtil.applicationContext 
    = arg0;
        }

        
    public static Object getBean(String name){
            
    return applicationContext.getBean(name);
        }

    }

         2、在框架中配置:

    <bean id="spring" class="com.test.SpringUtil">

         3、最后就是使用了:

    com.test.bsn.Job bsnjob = (com.test.bsn.Job)SpringUtil.getBean("bsnws");
    bsnjob.doQueryBalance();

         上面"bsnws"是配置在spring框架中的bean,直接调用SpringUtil的静态函数即可获得。

         此方法非常简单,但是把spring整个框架暴露在外,有一些风险。而且要在普通类中获取框架定义的bean,必然要依赖框架。

  • 相关阅读:
    MySQL锁概述
    MYSQL删除重复记录
    SPRING事务控制
    性能测试中如何确定并发用户数
    Jsoup操作
    linux根据端口号查询进程
    linux下解压jar文件
    开发阶段的logback.xml
    栈--getMin(leetcode 155)
    git "fatal: The remote end hung up unexpectedly"
  • 原文地址:https://www.cnblogs.com/badwood316/p/1419211.html
Copyright © 2020-2023  润新知