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

Spring Bean配置方式總結(jié)

 更新時間:2023年12月15日 09:41:51   作者:是只菜鳥呀  
定義Spring Bcan的3種方式分別是:基于XML 的方式配置、基于注解掃播方式配置、基于元數(shù)據(jù)類的配置,本文就通過代碼示例給大家詳細講講這三種配置方式,需要的朋友可以參考下

SpringBean是Spring中最基本的組成單元,Spring 官方文檔對 Bean 的解釋是這樣的:

In Spring, the objects that form the backbone of your application and that are managed by theSpring loC container are called beans. A bean is an object that is instantiated, assembled, and managedby a Spring IoC container.

翻譯過來就是:

在Spring中,構(gòu)成應(yīng)用程序主并由SpringIoC容器管理的對象被稱為Bean。Bean是一個由SpringIoC容器實例化、組裝和管理的對象。

從官方定義中,我們可以提取出以下信息

1)Bean 是對象,一個或者多個不限定

2)Bean 托管在Spring 中一個叫作IoC的容器中

3)我們的程序是由一個個 Bean 構(gòu)成的。

Spring 是通過聲明式配置的方式來定義 Bean的,所有創(chuàng)建Bean需要的前置依賴或者參數(shù)都通過配置文件先聲明,Spring 啟動以后會解析這些聲明好的配置內(nèi)容。

那么,我們該如何定義Spring 中的 Bean呢?一般來說,Spring Bean的定義配置有3種方法。

1基于XML的方式配置,這種配置方式主要適用于以下兩類場景

(1)Bean 實現(xiàn)類來自第三方類庫,比如 DataSource 等。

(2)需要定義命名空間的配置,如 context、aop、mvc等。

舉個例子,來看一段代碼。

<beans>
    <import resource="resource1.xml"/>//導(dǎo)入其他配置文件Bean 的定義
    <import resource="resource2,xmI" />
        <bean id="userService" class="com.gp.s.UserService" init-method="init" destory-method="destory">
        </bean>
        <bean id="message”class="java.lang.String">
            <constructor-arg index="o" value="test"></constructor-arg>
        </bean>
</beans>

這段代碼是標(biāo)準(zhǔn)的 Spring 配置內(nèi)容,首先導(dǎo)入一個叫作 resourcel.xm標(biāo)準(zhǔn)配置文件。然后,導(dǎo)入第二個標(biāo)準(zhǔn)配置文件resource2.xml。接著,定義一個叫作 userService的 Bean,對應(yīng)的類是 com.gp.s.UserService,并且聲明了在userService 實例化之后要用init0方法,在userService 銷毀之后調(diào)用destory0方法。

2基于注解掃描的方式配置,這種配置方式主要適用于開發(fā)中需要引用的類,如ControleService、Dao等,配置代碼如下。

<context:component-scan base-package="com.gp.s">
    <!-- 包含的目標(biāo)類-->
    <context:include-filter type="regex” expression="com.gp.s.mall.*"/>
    <!-- 排除的目標(biāo)類-->
    <context;exclude-filter type="aspectj"
                    expression="com.gp.s.mall.*Controller+"/>
</context:component-scan>

在這段配置中,context:component-scan 相當(dāng)于使用了 Spring 內(nèi)置的掃描注解的組@ComponentScan ,聲明了需要掃描的基礎(chǔ)包路 com.gp.s ,把所有com.gp.s.mall 下面的子包全部納入掃描范圍,并且排除了 com.gp.s.mall包面所有以Controller 結(jié)尾或者包含 Controller 結(jié)尾的類
使用 Spring 容器管理組件的 beanName 規(guī)則,默認是類名首字母變小寫,可以自己修改。

Spring 主要提供了 4 種內(nèi)置的注解來聲明 Bean。它們分別是

@Controller (聲明為控制層組件的Bean)、

@Service (聲明為業(yè)務(wù)邏輯層組件的 Bcan)、

@Repository (聲明為數(shù)據(jù)訪間層組件的當(dāng)對組件的層次難以定位的時候使用

@Component 注解來聲明。Bean)

Spring 提供了4個注解,這些注解的作用與XML定義 Bean 的作用一樣,都是將組件交給Spring 容器管理。組件的名稱默認是類名 (首字母變小寫),可以自己修改。

3基于Java類的配置,這種配置方式主要適用于以下兩類場景。

(1)需要通過代碼控制對象創(chuàng)建邏輯的場景。

(2)實現(xiàn)零配置,消除XML 配置文件的場景

同樣還是舉個例子,來看一段代碼:

@Configurationpublic 
class BeansConfiguration {
    @Bean
    public Student student(){
        Student student = new Student();student.setName("三");
        student.setTeacher(teacher());
        return student;
    }
    @Bean
    public Teacher teacher(){
        Teacher teacher= new Teacher();
        teacher.setName("Tom");
        return teacher;
    }
}

通過分析這段代碼,可以了解到使用基于類的配置需要以下步驟。

1)在 BeansConfiguration 類上配置@Configuration 注解,表示將 BeansConfiguration 類定義為Bean的元數(shù)據(jù)。

2)在方法上使用@Bean 注解,方法名默認就是 Bean 的名稱,方法返回值就是 Bean 的實例

3)過AmnolationConfgApplicationContext 或子類來啟動 Spring 容器,從而加載這些已聲明好的注解配置。

總結(jié)一下,定義 Spring Bcan 的3 種方式分別是:基于XML 的方式配置、基于注解掃播方式配置、基于元數(shù)據(jù)類的配置。

那么Bcan 的配置定義好以后,Spring 又是如何加載這些 Bean 配置并創(chuàng)建 Bean 實例的哪:

Spring 解析這些聲明好的配置內(nèi)容,將這些配置內(nèi)容都轉(zhuǎn)化為 BeanDefinition 對多BeanDefinilion 中幾平保存了配置文件中聲明的所有內(nèi)容,再將 BeanDefinition 保存bcanDcfinitionMap中,以beanName 作為key,以BeanDefinition 對象作為value。之后,Spring容器根據(jù) beanName找到對應(yīng)的 BeanDefinition,再去選擇具體的創(chuàng)建策略。

以上就是Spring Bean配置方式總結(jié)的詳細內(nèi)容,更多關(guān)于Spring Bean配置方式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用JAVA8 filter對List多條件篩選的實現(xiàn)

    使用JAVA8 filter對List多條件篩選的實現(xiàn)

    這篇文章主要介紹了使用JAVA8 filter對List多條件篩選的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java代碼實現(xiàn)酒店管理系統(tǒng)

    Java代碼實現(xiàn)酒店管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java代碼實現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Spring中@Autowired和@Resource注解的使用區(qū)別詳解

    Spring中@Autowired和@Resource注解的使用區(qū)別詳解

    這篇文章主要介紹了Spring中@Autowired和@Resource注解的使用區(qū)別詳解,@Autowired默認根據(jù)type進行注入,找到與指定類型兼容的?Bean?并進行注入,如果無法通過type匹配到對應(yīng)的?Bean?的話,會根據(jù)name進行匹配,如果都匹配不到則拋出異常,需要的朋友可以參考下
    2023-11-11
  • Java拋出異常與自定義異常類應(yīng)用示例

    Java拋出異常與自定義異常類應(yīng)用示例

    這篇文章主要介紹了Java拋出異常與自定義異常類,結(jié)合實例形式分析了Java針對錯誤與異常處理的try、catch、throw等語句相關(guān)使用技巧,需要的朋友可以參考下
    2019-03-03
  • Spring?MVC項目中的異常處理詳解

    Spring?MVC項目中的異常處理詳解

    在Web開發(fā)中 我們經(jīng)常會需要處理各種異常,這篇文章主要給大家介紹了關(guān)于Spring?MVC項目中異常處理的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • SpringBoot配置logback的步驟

    SpringBoot配置logback的步驟

    這篇文章主要介紹了SpringBoot配置logback的步驟,幫助大家更好的理解和使用SpringBoot框架,感興趣的朋友可以了解下
    2020-09-09
  • 在SpringBoot項目中如何實現(xiàn)線程池的動態(tài)監(jiān)控

    在SpringBoot項目中如何實現(xiàn)線程池的動態(tài)監(jiān)控

    Spring Boot因其簡便、高效的特點廣受開發(fā)者喜愛,在復(fù)雜的業(yè)務(wù)場景下,如何確保Spring Boot應(yīng)用的高性能和穩(wěn)定性成為了一個關(guān)鍵問題,其中,線程池的管理策略直接影響到系統(tǒng)的吞吐量和資源利用效率,本文將重點探討在Spring Boot項目中,如何實現(xiàn)線程池的動態(tài)監(jiān)控
    2023-10-10
  • 密碼系統(tǒng)AES私鑰RSA公鑰的加解密示例

    密碼系統(tǒng)AES私鑰RSA公鑰的加解密示例

    這篇文章主要為大家詮釋并介紹了AES私鑰RSA公鑰的加解密系統(tǒng)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • Spring Boot中HTTP請求參數(shù)轉(zhuǎn)換和請求體JSON反序列化的區(qū)別解析

    Spring Boot中HTTP請求參數(shù)轉(zhuǎn)換和請求體JSON反序列化的區(qū)別解析

    本文主要介紹了SpringBoot中HTTP請求參數(shù)轉(zhuǎn)換和請求體JSON反序列化的區(qū)別,本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • java中各種對象的比較方法

    java中各種對象的比較方法

    Java對象的比較是初學(xué)者不易掌握的,下面這篇文章主要給大家介紹了關(guān)于java中各種對象的比較方法,文中通過實例代碼以及圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04

最新評論

开鲁县| 伽师县| 罗定市| 大余县| 杭锦旗| 永胜县| 沧州市| 聊城市| 阿拉尔市| 沙田区| 沙田区| 额尔古纳市| 巴林左旗| 酒泉市| 射阳县| 博乐市| 界首市| 炎陵县| 晴隆县| 平山县| 绍兴市| 东阳市| 余干县| 郑州市| 海盐县| 罗田县| 邹平县| 准格尔旗| 永和县| 西青区| 荔波县| 宜城市| 鸡西市| 都匀市| 方山县| 汉寿县| 绥棱县| 儋州市| 高阳县| 济阳县| 福鼎市|