最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring將一個的類配置成Bean的方式詳解

 更新時間:2023年03月20日 09:43:25   作者:王佑輝  
這篇文章主要介紹了Spring將一個的類配置成Bean的方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

一、說明

1.第三方的bean不能改寫源碼,在類上加@Component注解

2.只能引入該類進(jìn)行反射創(chuàng)建,再更改其BeanDefinition信息

二、四種方式

1.@Bean方式,實例化過程可以更改

2.@Import導(dǎo)入類,實例化過程不能干預(yù)

3.@Import導(dǎo)入ImportBeanDefinitionRegistrar實現(xiàn)類,可以給BeanDefinition設(shè)置屬性等信息

4.beanDefinition注冊后置處理器(BeanDefinitionRegistryPostProcessor),不需要@Import引入,但順序在后面

三、代碼示例

3.1 @Bean方式

package com.learning.bean;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @Author wangyouhui
 * @Description 配置類
 **/
@Configuration
public class BeanConfig {
	@Bean
	public DruidDataSource dataSource(){
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setUsername("root");
		return dataSource;
	}
}

3.2 @Bean方式

package com.learning.bean;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
/**
 * @Author wangyouhui
 * @Description 配置類
 **/
@Configuration
@Import(DruidDataSource.class)
public class BeanConfig2 {
}

3.3 @Import導(dǎo)入ImportBeanDefinitionRegistrar實現(xiàn)類

package com.learning.bean;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.type.AnnotationMetadata;
/**
 * @Author wangyouhui
 * @Description 配置類
 **/
@Configuration
@Import(ImportBeanDefinitionRegistrar.class)
public class BeanConfig3 {
}
class ImportBeanDefinitionRegistrar implements org.springframework.context.annotation.ImportBeanDefinitionRegistrar{
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        // BeanDefinition存儲Bean的描述信息,決定Bean生產(chǎn)方式
        RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(DruidDataSource.class);
        rootBeanDefinition.getPropertyValues().add("password", "root");
        registry.registerBeanDefinition("dataSource", rootBeanDefinition);
    }
}

3.4 BeanDefinitionRegistryPostProcessor

package com.learning.bean;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.stereotype.Component;
/**
 * @Author wangyouhui
 * @Description beanDefinition注冊后置處理器
 **/
@Component
public class BeanDefinitionRegistryPostProcessor implements org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor {
    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
        RootBeanDefinition beanDefinition = new RootBeanDefinition();
        beanDefinition.getPropertyValues().add("password", "root");
        beanDefinitionRegistry.registerBeanDefinition("dataSource", beanDefinition);
    }
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
    }
}

到此這篇關(guān)于Spring將一個的類配置成Bean的方式詳解的文章就介紹到這了,更多相關(guān)Spring將類配成Bean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中TCP通信的實現(xiàn)方法詳解

    Java中TCP通信的實現(xiàn)方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中TCP通信的實現(xiàn)方法,TCP通信能實現(xiàn)兩臺計算機之間的數(shù)據(jù)交互,通信的兩端,要嚴(yán)格區(qū)分為客戶端(Client)與服務(wù)端(Server),需要的朋友可以參考下
    2023-09-09
  • MyBatis使用annonation定義類型映射的簡易用法示例

    MyBatis使用annonation定義類型映射的簡易用法示例

    這篇文章主要介紹了MyBatis使用annonation定義類型映射的簡易用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java?log?is判斷引發(fā)的一系列事件解析

    java?log?is判斷引發(fā)的一系列事件解析

    這篇文章主要為大家介紹了java?log?is判斷引發(fā)的一系列事件解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • java中如何獲取相關(guān)參數(shù)

    java中如何獲取相關(guān)參數(shù)

    這篇文章主要介紹了java獲取系統(tǒng)屬性相關(guān)參數(shù)的方法,,需要的朋友可以參考下
    2015-07-07
  • SpringBoot密碼加密的實現(xiàn)示例

    SpringBoot密碼加密的實現(xiàn)示例

    本文主要介紹了SpringBoot密碼加密的實現(xiàn)示例,包括引入依賴、配置加密工具、生成加密密鑰、加密密碼、配置解密,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹

    java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹

    這篇文章主要介紹了java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • java8如何根據(jù)某一屬性條件快速篩選list中的集合

    java8如何根據(jù)某一屬性條件快速篩選list中的集合

    這篇文章主要介紹了java8如何根據(jù)某一屬性條件快速篩選list中的集合,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java實現(xiàn)AES加密算法的簡單示例分享

    Java實現(xiàn)AES加密算法的簡單示例分享

    這篇文章主要介紹了Java實現(xiàn)AES加密算法的簡單示例分享,AES算法是基于對密碼值的置換和替代,需要的朋友可以參考下
    2016-04-04
  • Java實現(xiàn)常見的排序算法代碼實例

    Java實現(xiàn)常見的排序算法代碼實例

    這篇文章主要介紹了Java實現(xiàn)常見的排序算法代碼實例,按照思路實現(xiàn)了以下幾個排序算法(冒泡排序、直接插入排序、直接選擇排序、快速排序),方便日后用到,特此記錄一下,需要的朋友可以參考下
    2023-11-11
  • 虛擬機linux中jdk安裝配置方法

    虛擬機linux中jdk安裝配置方法

    這篇文章主要為大家詳細(xì)介紹了虛擬機linux中jdk安裝配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評論

陆丰市| 平原县| 四平市| 武汉市| 津南区| 夏河县| 湖北省| 泽普县| 和静县| 西丰县| 陆丰市| 新丰县| 清远市| 达州市| 商南县| 潼南县| 化州市| 义马市| 长垣县| 响水县| 涟水县| 珲春市| 栾川县| 济源市| 台安县| 寻甸| 阿坝县| 习水县| 兴文县| 临邑县| 昌图县| 泸州市| 桓台县| 奇台县| 东阿县| 沧源| 信阳市| 疏附县| 泰州市| 井研县| 康保县|