8-命名空间和bean作用域

 

命名空间

p命名空间

在beans中添加p命名空间的支持

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

以前要对一个属性进行注入,一般是按这种方式:

<bean id="person" class="com.ajream.pojo.Person">
    <property name="name" value="张三"/>
</bean>

使用了p命名空间,可以这样写:

<bean id="person" class="com.ajream.pojo.Person" p:name="张三" />

p就是 property 的简写

c命名空间

c代表了 constructor-arg,因此c命名空间是通过构造函数来进行注入的

在beans中添加c命名空间的支持

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

未使用命名空间:

<bean id="person" class="com.ajream.pojo.Person">
    <constructor-arg name="name" value="张三" />
</bean>

使用c命名空间:

<bean id="person" class="com.ajream.pojo.Person" c:name="王五" />

另外,p命名空间和c命名空间还可以一起使用

bean作用域scope

单例模式

(默认使用单例模式)

说明:

<!--下面这两行代码等效,因为默认是单例(singleton)的 -->

<bean id="accountService" class="com.something.DefaultAccountService"/>

<bean id="accountService" class="com.something.DefaultAccountService" scope="singleton"/>

用户每次从spring获取的bean,其hashcode是相同的,

DefaultAccountService as1 = context.getBean("accountService");
DefaultAccountService as2 = context.getBean("accountService");

// as1与as2的hashcode相同

原生模式

333

<bean id="accountService" class="com.something.DefaultAccountService" scope="prototype"/>

用户每次从spring获取的bean,其hashcode是不同的

DefaultAccountService as1 = context.getBean("accountService");
DefaultAccountService as2 = context.getBean("accountService");

// as1与as2 的 hashcode 不相同

其他

除了上面2种还有4种模式(request、session、application、websocket),是开发web时会使用的,官方文档介绍请看:
点击跳转
在这里插入图片描述

 

posted @ 2021-07-31 20:32  aJream  阅读(46)  评论(0)    收藏  举报