如何在手動擷取spring中的bean(Spring ApplicationContextAware擷取上下文)

來源:互聯網
上載者:User

標籤:沒有   項目   string   業務   nts   上下文   static   擷取對象   多個   

一、目的

寫了一個項目,多個module,然後想在A模組中實現固定的config注入,當B模組引用A時候,能夠直接填寫相對應的配置資訊就行了。但是遇到一個問題,B引用A時候,A的配置資訊總是填充不了,擷取不到在B中配置好的資訊。猜測原因:因為項目的的bean檔案沒有被統一管理。

二、ApplicationContextAware 介面

Spring 提供了ApplicationContextAware類,通過它可以擷取所有bean上下文。

也就是說,當一個類實現了這個介面之後,這個類就可以方便地獲得 ApplicationContext 中的所有bean。

換句話說,就是這個類可以直接擷取Spring設定檔中,所有有引用到的bean對象。

三、介面引用

1.工具類SpringContextUtil實現ApplicationContextAware方法,實現 setApplicationContext方法即可

public class SpringContextUtil implements ApplicationContextAware {    private static ApplicationContext applicationContext; // Spring應用上下文環境    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        SpringContextUtil.applicationContext = applicationContext;    }    /**     * 擷取對象     *      * @param name     * @return Object 一個以所給名字註冊的bean的執行個體     * @throws BeansException     */    public static Object getBean(String name) throws BeansException {        return applicationContext.getBean(name);    }}

2.業務調用

 public String getConfig() throws IOException {     MyConfig myConfig = (MyConfig)SpringContextUtil.getContext().getBean("myConfig");     System.out.println("my config is"+myConfig.toString());     return myConfig.toString(); }

3.MyConfig

只是一個正常properties的配置映射。

如何在手動擷取spring中的bean(Spring ApplicationContextAware擷取上下文)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.