第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring - 參考 Java bean 在 XML 中創(chuàng)建 bean,反之亦然

Spring - 參考 Java bean 在 XML 中創(chuàng)建 bean,反之亦然

慕田峪7331174 2023-07-19 16:45:44
如果我在 Java 中使用 @Bean 創(chuàng)建了一個 bean,那么在 XML 中創(chuàng)建 bean 時如何在 XML 中引用此 bean?如果我在 XML 中創(chuàng)建了一個 bean,那么在 Java 中創(chuàng)建 bean 時如何引用該 bean?
查看完整描述

3 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

在Java 類中創(chuàng)建bean 相當于在XML 文件中創(chuàng)建bean。因此,如果您想在 XML 文件中引用在 Java 類中創(chuàng)建的 bean,只需使用ref= beanName屬性來引用該 bean,反之亦然。


官方文檔中寫道:


4.2.1. 聲明一個bean


要聲明 bean,只需使用 @Bean 注釋來注釋方法即可。當JavaConfig遇到這樣的方法時,它將執(zhí)行該方法并將返回值注冊為BeanFactory中的bean。默認情況下,bean 名稱將是方法名稱。


@Configuration

public class AppConfig {

    @Bean

    public TransferService transferService() {

        return new TransferServiceImpl();

    }

}

上面的內容與下面的appConfig.xml完全等效:


<beans>

    <bean name="transferService" class="com.company.TransferServiceImpl"/>

</beans>

兩者都會導致 BeanFactory/ApplicationContext 中存在一個名為 TransferService 的 bean,該 bean 綁定到 TransferServiceImpl 類型的對象實例:


而且您還需要確保添加


<bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/> 

在您的 xml 中,因此如果您的 XML 配置和 Java 配置在不同的上下文中聲明,則它們具有相同的 bean 定義。


如果您想將傳統(tǒng)的 bean 配置從 XML 包含到 Java 配置,那么您需要將 XML 資源導入到該類,如下所示:


@ImportResource({"classpath*:your-configuration.xml"})


查看完整回答
反對 回復 2023-07-19
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

其他答案僅回答了圖片的一部分。讓我嘗試總結一下大局。關鍵點是每個 bean 都有一個在 spring 容器中唯一的標識符。我們可以使用這個標識符來引用 bean。

bean 標識符可以通過以下方式配置:

  • XML:idname屬性<bean/>

  • Java配置:

    • valuename中的屬性@Bean。

    • value屬性 in@Component及其構造型注釋,例如等@Service。@Controller

如果未顯式配置標識符,則根據(jù) Bean 的聲明方式,將為它們生成一個默認標識符:

  • 對于使用 XML 及其構造型聲明的 bean ,它是采用lowerCamelCase@Component格式的該 bean 的類名。

  • 對于使用 聲明的 bean @Bean,它是該 bean 方法的名稱

要引用 XML 中 Java 配置中聲明的 bean,請使用ref屬性來引用其標識符,例如:

   <bean name="foo" class="com.example.Foo">
        <property name="service" ref="bar"/>
    </bean>

所以service屬性是對一個 bean 的引用,其標識符被稱為bar

要在 Java 中引用 XML 中聲明的 bean,您只需@Autowired在字段上進行注釋即可。如果只有一個 Spring bean 的類型與該字段的類型相同(本例中為 Bar),則該 bean 將自動被引用并注入。它被稱為按類型自動連接,您不需要通過 bean 標識符來引用它:

@Service

public class Foo {


   @Autowired   

   private Bar service;


}

另一方面,如果有多個類型也是 Bar 的 bean,則必須使用@Qualifierbean 標識符來引用這些 Bar beans 中的特定 bean。這稱為按名稱自動連接:


@Service

public class Foo {


   @Autowired   

   @Qualifier("bar123")

   private Bar service;


}


查看完整回答
反對 回復 2023-07-19
?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

您可以創(chuàng)建一個簡單的 Spring bean、Grandmother,并添加對 beans MotherBean 和 FatherBean 的引用。


您有兩種方法可以做到這一點:


第一種方法


豆奶奶:


@Service("grandmotherBean")

public class Grandmother {


    @Autowired

    private MotherBean motherBean;


    @Autowired

    private FatherBean father;


}

豆媽媽來了


@Service("motherBeanBean")

public class MotherBean {

public MotherBean() {


}


@Override

public String toString() {

    return " it is me ! MotherBean";

}


}

豆爸爸來了


@Service("fatherBeanBean")

public class FatherBean {

    public  FatherBean (){


    }


    @Override

    public String toString() {

        return " it is me ! FatherBean";

    }



}

另一種方法是您可以直接配置 Spring bean 引用applicationContext.xml


第二種方法


<beans xmlns="http://www.springframework.org/schema/beans"


    <bean id="Grandmother"

        class="com.dulaj.stack.Grandmother">

        <property name="FatherBean" >

            <ref local="fatherBeanBean"/>

        </property>

    </bean>


  <bean id="fatherBeanBean" class="com.dulaj.stack.FatherBean">

    </bean>  

</beans>


查看完整回答
反對 回復 2023-07-19
  • 3 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號