当前位置: 首页 > news >正文

spring管理bean

大家好,这里是教授.F

管理bean方面:


获取bean:

/**
* 通过类型来获取容器的 bean 对象
*/
@Test
public void getMonsterByType() {ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");Monster monster = ioc.getBean(Monster.class);System.out.println("monster=" + monster);Monster monster2 = ioc.getBean(Monster.class);System.out.println("monster == monster2 的值= " + (monster == monster2));
}
1. 按类型来获取 bean, 要求 ioc 容器中的同一个类的 bean 只能有一个, 
否则会抛出异常NoUniqueBeanDefinitionException
2. 这种方式的应用场景:比如 XxxAction/Servlet/Controller, 
或 XxxService 在一个线程中只需要一个对象实例(单例)的情况
3. 老师这里在说明一下: 在容器配置文件(比如 beans.xml)中给属性赋值, 底层是通过
setter 方法完成的, 这也是为什么我们需要提供 setter 方法的原因

通过构造器配置bean对象:

<!-- 在 spring 的 ioc 容器, 可以通过构造器来配置 bean 对象
-->
<bean id="monster02" class="com.hspedu.spring.beans.Monster">
<constructor-arg value="2" index="0"/>
<constructor-arg value="蜘蛛精" index="1"/>
<constructor-arg value="吐口水" index="2"/>
</bean>
<!-- 数据类型就是对应的 Java 数据类型,按构造器参数顺序
-->
<bean id="monster03" class="com.hspedu.spring.beans.Monster">
<constructor-arg value="3" type="java.lang.Integer"/>
<constructor-arg value="白骨精" type="java.lang.String"/>
<constructor-arg value="白骨鞭" type="java.lang.String"/>
</bean>
通过 index 属性来区分是第几个参数
2. 通过 type 属性来区分是什么类型(按照顺序)

通过P名称空间配置bean:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 在 spring 的 ioc 容器, 可以通过 p 名称空间来配置 bean 对象 -->
<bean id="monster04" class="com.hspedu.spring.beans.Monster"p:monsterId="4" p:name="红孩儿"p:skill="吐火~"
/>

相关文章:

  • 数据标准的制定落地
  • 使用Python爬取华为市场游戏类APP应用
  • Redis用GEO实现附近的人功能
  • 网络流量处理及分析工具
  • Redis 中的 Zset 数据结构详解
  • C++系列——————类和对象(上)
  • 固定翼飞机(固定翼飞行器)种类丰富 国家政策推动行业发展速度加快
  • 基于FreeRTOS+STM32CubeMX+LCD1602+MCP6S28的8通道模拟可编程增益放大器Proteus仿真
  • 什么是AVIEXP提前发货通知?
  • 供应黑烟识别器公司哪家强?
  • 【mysql】ubuntu下安装数据库
  • 【React篇】组件错误边界处理(组件错误引起的页面白屏)
  • 智狐联创-AI知识库:AI数字化转型的领航者
  • 【linux深入剖析】进程间通信
  • Spark 核心编程之 RDD 介绍
  • (三)从jvm层面了解线程的启动和停止
  • 【Leetcode】104. 二叉树的最大深度
  • 2017 年终总结 —— 在路上
  • ES学习笔记(12)--Symbol
  • Fundebug计费标准解释:事件数是如何定义的?
  • If…else
  • mysql 数据库四种事务隔离级别
  • mysql外键的使用
  • PHP 的 SAPI 是个什么东西
  • session共享问题解决方案
  • 规范化安全开发 KOA 手脚架
  • 经典排序算法及其 Java 实现
  • 精彩代码 vue.js
  • 批量截取pdf文件
  • 七牛云假注销小指南
  • 微信小程序实战练习(仿五洲到家微信版)
  • 系统认识JavaScript正则表达式
  • 译有关态射的一切
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 阿里云API、SDK和CLI应用实践方案
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #ifdef 的技巧用法
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $GOPATH/go.mod exists but should not goland
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (十五)使用Nexus创建Maven私服
  • (四) 虚拟摄像头vivi体验
  • (转)linux下的时间函数使用
  • (转)Unity3DUnity3D在android下调试
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .Net Core 中间件与过滤器
  • .net 流——流的类型体系简单介绍
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net下的富文本编辑器FCKeditor的配置方法
  • /etc/motd and /etc/issue
  • [04] Android逐帧动画(一)