欢迎来到LYBLaoInB的博客
LYBLaoInB
LYBLaoInB
回首往事,不因虚度年华而悔恨,不因碌碌无为而愧疚

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

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>

 

posted @ 2019-06-04 14:40  LiuYongbo  阅读(506)  评论(0编辑  收藏  举报
<--将网易云歌单中的id复制到上面的data-id中就可以了 http://music.163.com/playlist?id=3103841025&userid=1698529278 -->