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 @   aJream  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示