国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean

這篇具有很好參考價(jià)值的文章主要介紹了解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

實(shí)現(xiàn)方式

著急尋求解決方式的猿友先看這塊

定義配置轉(zhuǎn)化類

public class UserConverter implements Converter<String, List<User>> {

        @Override
        public List<User> convert(String config) {
            if (StringUtils.isEmpty(config)) {
                return Collections.emptyList();
            }
            return JsonUtil.fromJson(config, new TypeReference<List<User>>() {
            });
        }
    }

將轉(zhuǎn)化類放入轉(zhuǎn)化工廠


@Configuration
public class ConverterConfiguration {


    @Bean
    public ConversionServiceFactoryBean conversionService() {
        ConversionServiceFactoryBean factoryBean = new ConversionServiceFactoryBean();
        factoryBean.setConverters(Sets.newHashSet(new UserConverter()));
        return factoryBean;
    }
}

屬性注入

@Service
public class UserService{

@Value("${userConfig:[]}")
private List<User> users;
}

spring在bean生命周期的屬性賦值中,會(huì)根據(jù)屬性的類型,匹配相應(yīng)的轉(zhuǎn)化類,執(zhí)行轉(zhuǎn)化,進(jìn)而賦值。

代碼改進(jìn)

不難看出,這些轉(zhuǎn)化類僅執(zhí)行轉(zhuǎn)化邏輯,不存在線程安全問(wèn)題,可以將其放入spring的IOC中,關(guān)閉對(duì)ConverterConfiguration的修改。代碼簡(jiǎn)化如下:


@Configuration
public class ConverterConfiguration {

    // 收集自定義的配置解析工具類
    @Resource
    private Set<Converter> converters;


    @Bean
    public ConversionServiceFactoryBean conversionService() {
        ConversionServiceFactoryBean factoryBean = new ConversionServiceFactoryBean();
        factoryBean.setConverters(converters);
        return factoryBean;
    }
}


@Component
public class UserConverter implements Converter<String, List<User>> {

        @Override
        public List<User> convert(String config) {
            if (StringUtils.isEmpty(config)) {
                return Collections.emptyList();
            }
            return JsonUtil.fromJson(config, new TypeReference<List<User>>() {
            });
        }
    }

按需拓展定義各式各樣的Converter即可

下面談下具體spring是怎么做的

解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean,spring,java,spring boot,后端

熟悉springbean生命周期的猿友應(yīng)該明白,紅框中的方法棧都是bean生命周期的執(zhí)行路徑(這里不做闡述,感興趣的猿友可以翻閱我往期博客,里面有做源碼解讀介紹),我們從生命周期的屬性賦值開始剖析源碼。

1.找尋需要依賴注入的屬性元素列表

??2.屬性元素依次轉(zhuǎn)化

解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean,spring,java,spring boot,后端

3.獲取自定義的轉(zhuǎn)化器

解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean,spring,java,spring boot,后端

?4.匹配合適的解析器

解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean,spring,java,spring boot,后端

?5.根據(jù)返回類型(保護(hù)泛型)匹配解析器

?6.執(zhí)行解析邏輯,進(jìn)行屬性賦值

解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean,spring,java,spring boot,后端

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-648301.html

?

?

到了這里,關(guān)于解讀spring中@Value 如何將配置轉(zhuǎn)自定義的bean的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot復(fù)習(xí):(18)@Value和@Autowired注解配置的屬性是怎么注入到bean中的?

    SpringBoot復(fù)習(xí):(18)@Value和@Autowired注解配置的屬性是怎么注入到bean中的?

    @Value java doc文檔指出,它是由 AutowiredAnnotationBeanPostProcessor 這個(gè) BeanPostProcessor 處理的。 AutowiredAnnotationBeanPostProcessor的構(gòu)造方法如下: 可見AutowiredAnnotationBeanPostProcessor用來(lái)處理@Autowired和@Value這兩個(gè)注解。 具體的處理流程是通過(guò)在容器對(duì)bean進(jìn)行實(shí)例化的時(shí)候應(yīng)用上述BeanPostPr

    2024年02月13日
    瀏覽(26)
  • 003 第一季SpringBoot2核心技術(shù)-核心功能2:數(shù)據(jù)訪問(wèn)、單元測(cè)試、指標(biāo)監(jiān)控、原理解析:@Value、命令行參數(shù)、手動(dòng)獲取bean、自定義starter

    003 第一季SpringBoot2核心技術(shù)-核心功能2:數(shù)據(jù)訪問(wèn)、單元測(cè)試、指標(biāo)監(jiān)控、原理解析:@Value、命令行參數(shù)、手動(dòng)獲取bean、自定義starter

    說(shuō)明 :在SpringBoot中想要操作數(shù)據(jù)庫(kù)完成增刪改差,按照以往的經(jīng)驗(yàn): 原理 : 首先 導(dǎo)入數(shù)據(jù)開發(fā)的場(chǎng)景starter(依賴)---- 這個(gè)場(chǎng)景會(huì)又會(huì)自動(dòng)導(dǎo)入數(shù)據(jù)庫(kù)相關(guān)的配置類---- 這個(gè)配置類又會(huì)導(dǎo)入相關(guān)的組件,如:數(shù)據(jù)源----》 數(shù)據(jù)源組件中又有相關(guān)的數(shù)據(jù)庫(kù)配置項(xiàng):用戶名、密碼

    2024年01月22日
    瀏覽(17)
  • Spring 非自定義Bean注解

    1.概述 在xml中配置的Bean都是自己定義的, 例如:UserDaolmpl,UserServicelmpl。但是,在實(shí)際開發(fā)中有些功能類并不是我們自己定義的, 而是使用的第三方j(luò)ar包中的,那么,這些Bean要想讓Spring進(jìn)行管理,也需要對(duì)其進(jìn)行配置配置非自定義的Bean需要考慮如下兩個(gè)問(wèn)題: 被配置的B

    2024年02月13日
    瀏覽(27)
  • Spring中自定義Bean特性

    自定義擴(kuò)展點(diǎn) Spring框架提供了許多接口,可以使用它們來(lái)定制bean的性質(zhì)。分組如下: 生命周期回調(diào) ApplicationContextAware 和 BeanNameAware 其他 Aware 接口 為了與容器對(duì)bean生命周期的管理進(jìn)行交互,可以實(shí)現(xiàn)Spring InitializingBean和DisposableBean接口。容器對(duì)前者調(diào)用afterPropertiesSet(),對(duì)后

    2024年02月16日
    瀏覽(23)
  • Spring Bean 作用域的定義

    Spring Bean 作用域的定義

    ????????在 Spring 配置中,我們可以通過(guò) scope 屬性來(lái)定義 Spring Bean 的作用域,可以接受 5 個(gè)內(nèi)建的值,分別代表 5 種作用域類型,下面給大家詳細(xì)總結(jié)一下: 1、singleton,用來(lái)定義一個(gè) Bean 為單例,也就是說(shuō)在 Spring loC 容器中僅有唯一 的一個(gè)實(shí)例對(duì)象,Spring 中的 Bean 默認(rèn)

    2024年02月12日
    瀏覽(21)
  • 【Spring類路徑Bean定義信息掃描】

    補(bǔ)充一下: AbstractBeanDefinition、AnnotatedBeanDefinition都是spring框架中定義和處理BeanDefinition的類,他們?cè)赟pringIOC容器的核心機(jī)制中有重要的地位。 1. AbstractBeanDefinition: 是個(gè)抽象類,實(shí)現(xiàn)了 BeanDefinition 接口,為BeanDefinition提供了一些通用的方法和屬性。 提供了BeanDefinition的基本結(jié)構(gòu)

    2024年01月16日
    瀏覽(19)
  • Java 框架面試題-Spring Boot自定義配置與自動(dòng)配置共存

    Java 框架面試題-Spring Boot自定義配置與自動(dòng)配置共存

    Spring Boot 是一個(gè)快速開發(fā)框架,可以簡(jiǎn)化 Spring 應(yīng)用程序的開發(fā),其中自定義配置是其中一個(gè)非常重要的特性。 在 Spring Boot 中,自定義配置允許開發(fā)者以自己的方式來(lái)配置應(yīng)用程序。自定義配置可以用于覆蓋默認(rèn)配置,也可以用于添加新的配置項(xiàng)。本文將詳細(xì)介紹 java框架面

    2023年04月11日
    瀏覽(24)
  • Spring5學(xué)習(xí)隨筆-生命周期、自定義類型轉(zhuǎn)換器、后置處理Bean

    Spring5學(xué)習(xí)隨筆-生命周期、自定義類型轉(zhuǎn)換器、后置處理Bean

    學(xué)習(xí)視頻:【孫哥說(shuō)Spring5:從設(shè)計(jì)模式到基本應(yīng)用到應(yīng)用級(jí)底層分析,一次深入淺出的Spring全探索。學(xué)不會(huì)Spring?只因你未遇見孫哥】 指的是一個(gè)對(duì)象創(chuàng)建、存活、消亡的一個(gè)完整過(guò)程 由Spring負(fù)責(zé)對(duì)象的創(chuàng)建、存活、銷毀,了解生命周期,有利于我們使用好Spring為我們創(chuàng)建

    2024年02月05日
    瀏覽(29)
  • Spring Security在6.0棄用WebSecurityConfigurationAdapter后該如何自定義配置介紹(新舊示例)

    Spring Security在6.0棄用WebSecurityConfigurationAdapter后該如何自定義配置介紹(新舊示例)

    在舊版的配置中,Security需要我們寫一個(gè)類去繼承他的WebSecurityConfigurerAdapter并把這個(gè)配置注入到容器中 在繼承這個(gè)類后,我們可以在WebSecurityConfigurer里面去重寫WebSecurityConfigurationAdapter類里面的一些方法來(lái)實(shí)現(xiàn)自定義過(guò)濾鏈等操作 實(shí)現(xiàn)自定義過(guò)濾鏈需要重寫configure(HttpSecurit

    2024年02月08日
    瀏覽(34)
  • 【Spring】使用@Bean和@Import注解配置Bean,與Bean的實(shí)例化

    【Spring】使用@Bean和@Import注解配置Bean,與Bean的實(shí)例化

    目錄 1、bean是什么 2、配置bean 2.1、使用@Bean注解配置Bean 2.2、使用@Import注解配置Bean ?3、實(shí)例化Bean ????????在 Spring 中,Bean 是指由 Spring 容器管理的對(duì)象。Spring IOC 容器負(fù)責(zé)創(chuàng)建、配置和管理這些 Bean 對(duì)象的生命周期。Spring IOC 容器會(huì)管理應(yīng)用程序中的組件,并通過(guò)依賴注

    2024年04月15日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包