命名空间和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
单例模式
(默认使用单例模式)
说明:
<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");
原生模式
<bean id="accountService" class="com.something.DefaultAccountService" scope="prototype"/>
用户每次从spring获取的bean,其hashcode是不同的
DefaultAccountService as1 = context.getBean("accountService");
DefaultAccountService as2 = context.getBean("accountService");
其他
除了上面2种还有4种模式(request、session、application、websocket),是开发web时会使用的,官方文档介绍请看: 点击跳转
|