spring-引用其他bean

本文深入探讨了Spring框架中Bean之间的引用配置方法,包括如何使用<ref>元素或ref属性进行Bean引用,以及内部Bean的声明与使用场景。内部Bean适用于仅在一个特定属性中使用的Bean,直接在<property>或<constructor-arg>中声明,无需id或name。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:引用其他Bean

1.组成应用程序的Bean经常需要相互协作已完成应用程序的功能,要使bean能够相互访问,就必须配置在Bean配置文件中指定Bean的引用。

2.在Bean的配置文件中,可以在<property>中<ref>元素或者ref属性为Bean的属性或构造器参数指定对Bean的引用。

<!--  可以使用property的ref属性来指定bean的引用关系-->
	<property name="car" ref="car2"></property>
<!-- 可以使用property的ref标签来指定bean的引用关系-->
    <property name="car">
		<ref bean="car"/>
	</property> 

3.也可以在属性或者构造器里包含Bean的声明,这样的Bean我们称之为内部Bean。

  • 当Bean实例仅仅给一个特定的属性使用时,可将其声明为内部Bean,内部Bean声明直接包含在<property>或者<constructor-arg>元素里,不需要设置id或name属性。
  • 内部Bean不能使用在任何地方
    <!-- 内部Bean不能在外部使用,只能在内部使用 -->
    		<property name="car">
    			<bean class="com.dhx.Car">
    				<property name="brand" value="fudi"></property>
    				<property name="corp" value="maanshan"></property>
    				<property name="maxSpeed" value="132564"></property>
    			</bean>
    		</property>

     

从您的描述来看,`<?xml ...>` 文件中引用Spring框架的XSD文件 `http://www.springframework.org/schema/beans/spring-beans.xsd`,但在实际运行或编辑过程中出现了“外部资源下载停止”的错误。 ### 原因分析及解决办法 #### 1. **网络原因** - 如果您所在的环境无法访问互联网,或者防火墙阻止了对 Spring 官方站点的请求,则会导致 XSD 资源加载失败。 - 解决方案:可以将所需的 `.xsd` 和其他相关依赖文件本地化,并通过修改 XML 中的路径指向本地存储位置。 修改示例: ```xml xsi:schemaLocation="http://www.springframework.org/schema/beans file:///path/to/local/spring-beans.xsd" ``` #### 2. **IDE 配置问题** - 某些 IDE (如 Eclipse 或 IntelliJ IDEA)默认可能会关闭自动加载远程 Schema 的功能。 - 解决方案: - 在 Eclipse 中:进入 **Preferences -> XML -> XML Catalog** 并手动添加该 Schema 到本地映射列表。 - 在 IntelliJ IDEA 中:打开设置菜单 (**File > Settings**) 找到对应选项允许远程Schema解析;另外也可以尝试缓存远程内容至项目内。 #### 3. **版本兼容性问题** - 使用的 Spring 版本与所指代的 spring-beans.xsd 是否匹配也可能是原因之一。例如旧版程序试图连接新版的 schema URL 地址可能导致不一致的问题发生。 - 解决方案:确认当前使用的 Spring Framework 具体版本号,然后替换正确的 xsd url 。比如对于spring4.*系列应该采用如下链接形式之一去替代原有地址: ``` http://www.springframework.org/schema/beans/spring-beans-4.0.xsd ``` --- ### 示例调整后的XML头部信息(基于假设场景) 如果确定使用的是Spring 5.X版本并结合上述思路改造后的内容可能像下面这样呈现出来: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:/schemas/spring-beans-5.0.xsd"> <!-- 同样保留后续 bean配置 --> ``` 这里我们将原本需要联网获取的`.xsd`改为classpath相对路径下的预拷贝副本形式规避潜在的风险同时提升启动效率. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值