一起來讀官方文檔—–SpringIOC(04)
- 2020 年 9 月 14 日
- 筆記
1.4.2。依賴性和詳細配置
如上一節所述,您可以將bean屬性和構造函數參數定義為對其他託管bean(協作者)的引用或內聯定義的值。Spring的基於XML的配置元數據為此目的在其
直值(原語,字符串等)
在value所述的屬性
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- results in a setDriverClassName(String) call -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="misterkaoli"/>
</bean>
<beans xmlns="//www.springframework.org/schema/beans"
xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
xmlns:p="//www.springframework.org/schema/p"
xsi:schemaLocation="//www.springframework.org/schema/beans
//www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/mydb"
p:username="root"
p:password="misterkaoli"/>
</beans>
前面的XML更簡潔。但是,拼寫錯誤是在運行時而不是設計時發現的,除非您使用IDE(例如IntelliJ IDEA或用於Eclipse的Spring工具)在創建bean定義時支持自動屬性完成。
您還可以配置java.util.Properties實例,如下所示:
<bean id="mappings"
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="properties">
<value>
jdbc.driver.className=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
</value>
</property>
</bean>
Spring容器將
idref元素
所述idref元件是一個防錯方法,主要通過將該容器中的另一個bean的id(將id作為一個字符串值傳遞-而不是引用)傳遞給
以下示例顯示了如何使用它:
<bean id="theTargetBean" class="..."/>
<bean id="theClientBean" class="...">
<property name="targetName">
//此處將 theTargetBean 作為字符串傳遞給 theClientBean的targetName屬性
//而不是將theTargetName這個bean的實例傳遞給targetName屬性
<idref bean="theTargetBean"/>
</property>
</bean>
前面的bean定義代碼段(在運行時)與以下代碼段完全等效:
idref 等價的是 value標籤 而不是 ref標籤
<bean id="theTargetBean" class="..." />
<bean id="client" class="...">
<property name="targetName" value="theTargetBean"/>
</bean>
元素 的local屬性在idref4.0 Bean XSD中不再受支持,因為它不再提供常規bean引用上的值。
升級到4.0模式時,將現有idref local引用更改為idref bean。
idref用法 可以校驗傳入的作為bean的id 會被用來校驗當前id的bean存不存在
<idref></idref>元素常用的位置(至少在spring2.0之前的版本中)是在ProxyFactoryBean bean定義中的AOP攔截器配置中。
在指定攔截器名稱時使用<idref></idref>元素可以防止拼寫錯誤。
ref 對其他Bean的引用
ref元素是