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相同
原生模式
<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时会使用的,官方文档介绍请看:
点击跳转
本文来自博客园,作者:aJream,转载请记得标明出处:https://www.cnblogs.com/ajream/p/15383522.html