Spring的属性注入之命名:p注入方式

本文介绍如何在Spring中使用P命名空间简化属性注入,包括基本语法、注意事项及复杂类型注入示例。通过这种方式,可以将property标签合并到bean标签内,提高配置文件的简洁性和可读性。

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

1.先在命名空间上引入:p

xmlns:p="http://www.springframework.org/schema/p"   

2.这样property标签就可以合并入bean标签里面了,比如:

<bean id="mep" class="com.test.inject.Me" p:name="abc" p:age="123"/>

3需要注意的是,这种类必须要有默认的构造方法,否则会导致spring报错说没有默认的构造方法。

nested exception is java.lang.NoSuchMethodException: com.mc.base.learn.spring.bean.Person.<init>()

因为

SpringContext利用无参的构造函数创建一个对象,然后利用setter方法赋值。所以如果无参构造函数不存在,Spring上下文创建对象的时候便会报错。

像property标签和:p标签这样的注入方式都是用setter默认配合无参构造方法进行的

而使用constructor-arg这种可以没有默认的构造方法,而是自己定义的构造方法进行注入参数的

4.p:name=""这种只适用于简单类型的属性注入

如果只复杂类的话,要用p:属性名-ref="该属性在spring中定义的bean id"

比如下面这样的就用到了p:来注入某个产品的分类信息。

<bean id="categroy" class="com.test.inject.Category" p:cateName="服装"></bean>
<bean id="calculate" class="com.test.inject.PriceCalculate"></bean>

<bean id="product" class="com.test.inject.Product" p:name="A21的T恤" p:categroy-ref="categroy">

  <property name="price" value="#{calculate.calPrice()}"/>
</bean>

 

转载于:https://www.cnblogs.com/liuyongbo/p/10973469.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值