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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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训练数据并当服务器共享给他人