在XML中进行显示配置

本文详细介绍了Spring框架中如何使用XML进行bean的定义与配置。包括基本的bean声明、构造器注入、属性注入等核心概念,并展示了如何利用不同的命名空间简化配置。

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

创建XML配置规范

在beans元素中配置,一般IDE会自动带的。

<?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 
       http://www.springframework.org/schema/beans/spring-beans.xsd 
       http://www.springframework.org/schema/context>
		
		<!-- configuration details go there -->
		
</beans>

声明一个简单的< bean>

<bean id="wheel" class="package.Wheel"/>
<bean id="seat" class="package.Seat"/>
<bean id="engine" class="package.Engine"/>

如果没有写id,则默认为package.Wheel#0,#0是一种计数的形式,如果还有其他的同类型的没写id的bean,则会为package.Wheel#1,以此类推。

借助构造器注入初始化bean

首先Car类得要有构造器,有这三个参数。

public Car(Wheel wheel, Seat seat, Engine engine) {
        this.wheel = wheel;
        this.seat = seat;
        this.engine = engine;
}

1.注入bean引用

使用constructor-arg

<bean id="car" class="package.Car">
	<constructor-arg ref="whell"/>
	<constructor-arg ref="seat"/>
	<constructor-arg ref="engine"/>
</bean>

这样就可以将上述三个bean装配进Car bean了。

使用c-命名空间

除了constructor-arg以外,还有c-命名空间。

首先要在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" 
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd 
       http://www.springframework.org/schema/context“>

		<!-- configuration details go there -->
</beans>

可见就是多了这条:xmlns:c="http://www.springframework.org/schema/c"

现在写Car bean

<bean id="car" class="wormday.springmvc.test.Car2"
          c:wheel-ref="wheel"
          c:seat-ref="seat"
          c:engine-ref="engine"  />

2.注入字面值

假设有个String类型也要初始化,但这不是bean,不能通过上述方法注入。

public Car(String name, String onwer) {
        this.name = name;
        this.owner = onwer;
}

使用constructor-arg

<bean id="car" class="package.Car">
	<constructor-arg value="biyadi">
	<constructor-arg value="xiaoming>
</bean>

不是使用ref,而是value属性。这里是按照前后装配的。

使用c-命名空间

<bean id="car" class="package.Car"
      c:_name="biyadi" 
      c:_owner="xiaoming" />

如果只有一个参数的话,就可以c:_="something"

通过方法注入bean

现在Car类有Set方法了

public void setWheel(Wheel wheel) {
    this.wheel = wheel;
}

public void setSeat(Seat seat) {
    this.seat = seat;
}

public void setEngine(Engine engine) {
    this.engine = engine;
}

1.注入bean引用

使用property

<bean id="car" class="package.Car">
	<property name="wheel" ref="wheel">
	<property name="seat" ref="seat">
	<property name="engine" ref="engine">
</bean>

这里name属性的内容,是在Car中的属性名。

使用p-命名空间

XML头部需要加一条xmlns:p="http://www.springframework.org/schema/p"

<bean id="car" class="package.Car"
	p:wheel-ref="wheel"
	p:seat-ref="seat"
	p:engine-ref="engine"  />

2.注入字面量

使用property

<bean id="car" class="package.Car">
	<property name="name" value="biyadi">
	<property name="owner" value="xiaoming">
</bean>

使用p-命名空间

<bean id="car" class="package.Car"
	p:name="biyadi"
	p:owner="xiaoming"
	p:wheel-ref="wheel"
	p:seat-ref="seat"
	p:engine-ref="engine"  />

不管是字面量还是bean引用,都是可以混合一起使用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值