1. 程式人生 > >spring框架中Bean的自動裝配

spring框架中Bean的自動裝配

什麼是Bean的自動裝配?

簡而言之,一個類就是一個Bean,Spring框架是一個Bean容器,替我們管理這些Bean。類似於舞臺劇,需要很多角色,Spring就是來組織各個角色之間的關係,然後對這些角色進行調動。

一、純粹使用XML檔案描述

此時XML 檔案就相當於一個總的司令部,所有的Bean都被統一地在該檔案中進行註冊登記。

二、使用註解描述

沒有了派出所統一登記造冊,Spring框架就不能通過這個統一的檔案來向自己容器內新增Bean。使用註解,就是在每個Bean上面做出標記,當遇到標記的時候,Spring就會產生相應的動作。

三、使用JavaConfig

這種方式也是結合註解來理解。就是建立一個配置Bean(也是一個類),對這個類進行@Configuration註解,內部多個方法產生類,類上面進行@Bean的標記。Spring容器啟動的時候通過XML檔案中你對這個配置Bean的描述找到這個配置Bean,然後通過其內部的註解進行相應的注入動作。

關於自動裝配

  • 有一個註解是@Autowired,這個註解會將一個Bean需要的其他Bean通過這個註解給注入進來。即一間房子,你聲明瞭門、窗和床。只要在這些屬性上面新增該註解,你就相當於擁有了這些屬性,而不需要使用new 來建立這些物件。
    下面是程式碼示例:
public class Room
{
    @Autowired
    private Bed bed;
    @Autowired
    private Door door;
    @Autowired
    private Window window;

    public String getBedName
() { return this.bed.name; } }

通過上面的程式碼我們可以發現,我們想要得到Bed的name,但是我們並沒有建立bed,而是通過spring通過註解給予Room一個Bed物件。

以此小結。

相關推薦

spring框架Bean自動裝配

什麼是Bean的自動裝配? 簡而言之,一個類就是一個Bean,Spring框架是一個Bean容器,替我們管理這些Bean。類似於舞臺劇,需要很多角色,Spring就是來組織各個角色之間的關係,然後對這些角色進行調動。 一、純粹使用XML檔案描述 此時XML

Spring框架Bean管理的常用註解

1. @Component:元件.(作用在類上)可以作用在任何一個類上 2. Spring中提供@Component的三個衍生註解:(功能目前來講是一致的) * @Controller -- 作用在WEB層(同樣可以使用@Component,因為@Controller是@Componen

Spring框架bean註冊相關的註解

官方資訊 XML名稱空間中的context(上下文,環境)。 xmlns:context="http://www.springframework.org/schema/context" Elemen

Spring框架bean配置

Spring IOC 基於xml開發 bean的配置 *<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XML

Spring --07.Spring框架bean管理的常用註解

Spring中用於管理bean的註解分為四大類: 1)、用於建立物件 2)、用於給物件中的屬性注入值 3)、用於改變作用範圍 4)、用於定義生命週期 1、用於建立物件 用於建立物件的有四個:@Component,@Controller,@Service,@Repo

Spring框架Bean的生命週期

① Spring IoC容器找到關於Bean的定義並例項化該Bean。 ② Spring IoC容器對Bean進行依賴注入。 ③ 如果Bean實現了BeanNameAware介面,則將該Bean的id傳給setBeanName方法。 ④ 如果Bean實現了BeanFactoryAware介面,

闡述Spring框架Bean的生命週期?

① Spring IoC容器找到關於Bean的定義並例項化該Bean。 ② Spring IoC容器對Bean進行依賴注入。  ③ 如果Bean實現了BeanNameAware介面,則將該Bean的id

Spring框架使用@Autowired自動裝配引發的討論

問題描述 有同事在開發新功能測試時,報了個錯,大致就是,在使用 @Autowired 注入時,某個類有兩個bean,一個叫a,一個叫b,Spring不知道該使用哪個bean注入。 一般這種情況應該宣告注入哪個bean,他沒有宣告,他不知道這個類有兩個bean,他說他和別人寫的一樣,別的都不報錯。

Spring框架自動裝配模式的區別

spring的自動裝配功能的定義:無須在Spring配置檔案中描述javaBean之間的依賴關係(如配置<property>、<constructor-arg>)。IOC容器會自動建立javabean之間的關聯關係。 簡而言之,一個類就是一個Bean,Spring框架是一個Bean容

Spring XML配置裏的Bean自動裝配

裝配bean car 是我 構造器 判斷 rand 命名 res class Spring自動裝配 這段是我們之前編寫的代碼,代碼中我們使用了P命名空間 並且使用手動裝配的方式將car <bean id="address" class="cn.bdqn.spr

Spring Bean 自動裝配 的歧義性(bean 的名稱重複)處理

在spring 中,spring 對於上下文的bean ,當自動裝配時,如果bean 的名稱相同,spring 無法做出選擇 。這就所謂的bean 自動裝配的歧義性。所以,當發現歧義性的時候,需要通過一些的方案來解決這個問題。 將可選bean 中的某個設定為首選(primary)的bea

Spring 學習(五)——XML 配置裡的 Bean 自動裝配

XML 配置裡的 Bean 自動裝配 •Spring IOC 容器可以自動裝配 Bean. 需要做的僅僅是在 <bean> 的 autowire 屬性裡指定自動裝配的模式 •byType(根據型別自動裝配): 若 IOC 容器中有多個與目標 Bean 型別一致的 Bean. 在這

學習spring bean自動裝配

Spring 容器可以在不使用<constructor-arg>和<property> 元素的情況下自動裝配相互協作的 bean 之間的關係,這有助於減少編寫一個大的基於 Spring 的應用程式的 XML 配置的數量。 自動裝配模式 下列自動裝配模式,

Spring Bean--自動裝配

自動裝配:實現bean的注入或者裝配 bean的自動裝配的型別(預設型別為No): 在同一個IOC容器中,id即屬性名是唯一的。 例: spring-autowiring.xml設定default-autowire: <?xml ve

Spring 初探(五)(Spring Bean 自動裝配與自定義監聽事件)

現在通行的使用bean的方法是不通過xml進行配置,而僅僅採用java 內建的類指明bean及相應的依賴關係,下面展開敘述。 @Configuration可以宣告某個類是作為配置類,在這樣的類中 通過@Bean進行修飾的方法可以返回相應的bean類 通過由Annotatio

Spring框架沒有掃描到bean之我遇到的錯誤

org.springframework.beans.factory.NoSuchBeanDefinitionException 會出現這樣的錯誤,出現這樣的錯誤就是沒有找到該bean,那就得看配置檔案了, 在我的web.xml檔案中  配置的掃描器是 <contex

spring自動裝配

1  xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w

【JAVA】使用自定義註解簡易模擬Spring自動裝配@Autowired

            使用自定義註解簡易模擬Spring中的自動裝配@Autowired 我們在學Spring的時候,常常需要配置大量的bean,由Spring進行管理,這就導致配置檔案的膨脹,後來使用到@Autowired註解,才發現到註解的強大,那麼底層是怎麼實現

JAVA異常基本知識及異常在Spring框架的整體解決方案

我們 程序 details 編譯錯誤 htm 及其 arch extends exception 異常的頂級父類是Throwable,下面有兩個子類Exception和Error。 Error錯誤一般是虛擬機相關的問題,如系統崩潰,虛擬機錯誤等,應用程序無法處理,直接導致

第四課:通過配置文件獲取對象(Spring框架的IOC和DI的底層就是基於這樣的機制)

ted const dex generate stat clas name 必須 nbsp 首先在D盤創建一個文件hero.txt,內容為:com.hero.Hero(此處必須是Hero的完整路徑) 接下來是Hero類 package com.hero; publi