成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于注解的spring 在靜態(tài)方法中使用注入的類

since1986 / 2626人閱讀

摘要:比如在處理數(shù)據(jù)源時(shí)返回,處理數(shù)據(jù)源時(shí)返回一開始的寫法可是會報(bào)錯(cuò)因?yàn)殪o態(tài)方法中不能使用非靜態(tài)的變量,而注解不支持靜態(tài)屬性上添加。同事給出了解決方案在初始化之后將包涵已經(jīng)注入好各個(gè)的付給一個(gè)靜態(tài)的變量在方法中通過來獲得注入的對象。

博客搬移到這里:http://yemengying.com/
有個(gè)自己的博客還蠻好玩的,bazinga!
在開發(fā)時(shí)遇到需要將多個(gè)來源的數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的格式,不同來源的數(shù)據(jù)轉(zhuǎn)換邏輯不同。所以想利用工廠模式 讓所有的轉(zhuǎn)換類繼承一個(gè)公有的類 然后在工廠類中根據(jù)不同的來源 返回不同的實(shí)例。比如在處理A數(shù)據(jù)源時(shí) 返回AConverter,處理B數(shù)據(jù)源時(shí) 返回BConverter
一開始的寫法:

@Component
public class ConverterFactory {

    @Resource
    private AConverter aConverter;
    @Resource
    private BConverter bConverter;
    @Resource
    private CConverter cConverter;

    public static POIConverter getConverter(String type) {
        switch (type) {
            case "a" : return aConverter;
            case "b" : return bConverter;
            case "c" : return cConverter;
        }
        return null;
    }
}

可是會報(bào)錯(cuò) 因?yàn)殪o態(tài)方法中不能使用非靜態(tài)的變量,而Resource注解不支持靜態(tài)屬性上添加。同事給出了解決方案 在初始化之后將包涵已經(jīng)注入好各個(gè)converter的this付給一個(gè)靜態(tài)的變量factory 在getConverter方法中 通過factory來獲得注入的對象。

@Component
public class ConverterFactory {

    @Resource
    private AConverter aConverter;
    @Resource
    private BConverter bConverter;
    @Resource
    private CConverter cConverter;
    
    private static ConverterFactory factory;

    @PostConstruct
    public void init() {
        factory = this;
    }

    public static POIConverter getConverter(String type) {
        switch (type) {
            case "a" : return factory.aConverter;
            case "b" : return factory.bConverter;
            case "c" : return factory.cConverter;
        }
        return null;
    }

}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64670.html

相關(guān)文章

  • Spring詳解3.Bean裝配

    摘要:的依賴關(guān)系,根據(jù)依賴關(guān)系配置完成之間的裝配。的行為信息,如生命周期范圍及生命周期各過程的回調(diào)函數(shù)。使用該種裝配模式時(shí),優(yōu)先匹配參數(shù)最多的構(gòu)造函數(shù)。如果提供了默認(rèn)的構(gòu)造函數(shù),則采用否則采用進(jìn)行自動裝配。 點(diǎn)擊進(jìn)入我的博客 1 Spring容器與Bean配置信息 Bean配置信息 Bean配置信息是Bean的元數(shù)據(jù)信息,它由一下4個(gè)方面組成: Bean的實(shí)現(xiàn)類 Bean的屬性信息,如數(shù)...

    endiat 評論0 收藏0
  • Spring入門IOC和AOP學(xué)習(xí)筆記

    摘要:入門和學(xué)習(xí)筆記概述框架的核心有兩個(gè)容器作為超級大工廠,負(fù)責(zé)管理創(chuàng)建所有的對象,這些對象被稱為。中的一些術(shù)語切面切面組織多個(gè),放在切面中定義。 Spring入門IOC和AOP學(xué)習(xí)筆記 概述 Spring框架的核心有兩個(gè): Spring容器作為超級大工廠,負(fù)責(zé)管理、創(chuàng)建所有的Java對象,這些Java對象被稱為Bean。 Spring容器管理容器中Bean之間的依賴關(guān)系,使用一種叫做依賴...

    wenyiweb 評論0 收藏0
  • Spring核心 面向切面 AOP

    摘要:下圖展示了這些概念的關(guān)聯(lián)方式通知切面的工作被稱為通知。切面在指定的連接點(diǎn)被織入到目標(biāo)對象中。該注解表明不僅僅是一個(gè),還是一個(gè)切面。 在軟件開發(fā)中,散布于應(yīng)用中多處的功能被稱為橫切關(guān)注點(diǎn)(crosscutting concern)。通常來講,這些橫切關(guān)注點(diǎn)從概念上是與應(yīng)用的業(yè)務(wù)邏輯相分離的(但是往往會直接嵌入到應(yīng)用的業(yè)務(wù)邏輯之中)。把這些橫切關(guān)注點(diǎn)與業(yè)務(wù)邏輯相分離正是面向切面編程(AOP...

    Winer 評論0 收藏0
  • Java設(shè)計(jì)模式綜合運(yùn)用(動態(tài)代理+Spring AOP)

    摘要:動態(tài)代理的核心是接口和類。以上結(jié)果說明它生成的代理類為,說明是代理。測試前提實(shí)現(xiàn)接口測試類使用接口方式注入代理方式必須以接口方式注入測試配置為,運(yùn)行結(jié)果如下實(shí)際校驗(yàn)邏輯。。。。 本文也同步發(fā)布至簡書,地址:https://www.jianshu.com/p/f70... AOP設(shè)計(jì)模式通常運(yùn)用在日志,校驗(yàn)等業(yè)務(wù)場景,本文將簡單介紹基于Spring的AOP代理模式的運(yùn)用。 1. 代理模...

    王晗 評論0 收藏0
  • Spring入門看這一篇就夠了

    摘要:甲乙交易活動不需要雙方見面,避免了雙方的互不信任造成交易失敗的問題。這就是的核心思想。統(tǒng)一配置,便于修改。帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建對象首先,就要提供帶參數(shù)的構(gòu)造函數(shù)接下來,關(guān)鍵是怎么配置文件了。 前言 前面已經(jīng)學(xué)習(xí)了Struts2和Hibernate框架了。接下來學(xué)習(xí)的是Spring框架...本博文主要是引入Spring框架... Spring介紹 Spring誕生: 創(chuàng)建Spring的...

    superw 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<