首页 > 其他分享 >[spring] spring学习笔记(2): 通过xml实现依赖注入 - 特殊注入类型

[spring] spring学习笔记(2): 通过xml实现依赖注入 - 特殊注入类型

时间:2024-01-16 16:34:33浏览次数:35  
标签:xml settter spring Player 类型 public 注入

实际应用中, 我们的对象可能会引用很多不同类型的东西, 不单单只是几个数值

对象类型

在前一篇文章中, 已经使用引用对象作为例子, 关键在于使用ref

<!--注意引用的对象要先创建Bean, id为weapon1-->
<bean id="player1" class="com.demo.player">
	<!--通过setter注入, 注意ref的使用-->
	<property name="lv" value="60"></property>
	<property name="weapon" ref="weapon1"></property>
</bean>

还有一种内部Bean的方法

<bean id="player2" class="com.demo.player">
	<!--通过setter注入, 注意ref的使用-->
	<property name="lv" value="60"></property>
	<property name="weapon">
		<bean id="weapon" class="com.demo.weapon">
			<property name="type" value="sword"></property>
		</bean>
	</property>
</bean>

以及级联属性

<!--注意引用的对象要先创建一个Bean, id是weapon3-->
<bean id="player3" class="com.demo.player">
	<!--通过setter注入, 注意ref的使用-->
	<property name="lv" value="60"></property>
	<property name="weapon" ref="weapon3"></property>
	<property name="weapon.type" value="catalyst"></property>
</bean>

Array类型

在Player类中增加一个数组, string类型

public class Player {
	private String[] Items;
	// getter and settter
}

配置

<bean id="player4" class="com.demo.player">
	<property name="items">
		<array>
			<value>coins</value>
			<value>shirts</value>
			<value>amor</value>
		</array>
	</property>
</bean>

List类型

添加一个列表, Item类型

public class Player {
	private List<Item> items;
	// getter and settter
}

配置

<!--记得先创建Item对象-->
<bean id="player5" class="com.demo.player">
	<property name="items">
		<list>
		<!--bean后面是上面创建的Item对象的id-->
			<ref bean="coins"></ref>
			<ref bean="amores"></ref>
		</list>
	</property>
</bean>

Map类型

添加一个映射, 表示玩家的各种属性值

public class Player {
	private Map<String, int> stats;
	// getter and settter and toString
}

配置, 总这里就可以看出xml配置还是有缺点的

<!--记得先创建Item对象-->
<bean id="player6" class="com.demo.player">
	<property name="stats">
		<map>
			<entry>
				<key><value>HP</value></key>
				<value>11320</value>
			</entry>
			<!--other entries-->
		</map>
	</property>
</bean>
<!--死亡缩进-->

集合Bean

就是不同类型的Bean集中到一起注入, i.e.把上文的map类型和list类型的放在一块
因为需要使用util, 所以xml文件头部变化较大

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:util="http://www.springframework.org/schema/beans/util"
	   xsi:schemaLocation="
	   	http://www.springframework.org/schema/util
		http://www.springframework.org/schema/beans/spring-util.xsd
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

下面这样写

<util:list id="someList">
	<ref bean="beanOfItemInList"></ref>
</util:list>
<util:map id="someMap">
	<entry>
		<key><value>HP</value></key>
		<!--could be other beans ... use 'ref'-->
		<value>11320</value>
	</entry>
	<!--other entries-->
</util:map>

p命名空间

p命名空间这样用

<!--前面记得创建weapon7的bean对象-->
<bean id="player7" class="com.demo.player" 
	  p:lv="60" p:weapon="weapon7"></bean>

完结, 没有感想, 个xml文件写得头疼

标签:xml,settter,spring,Player,类型,public,注入
From: https://www.cnblogs.com/Akira300000/p/17967678

相关文章

  • springboot第48集:【思维导图】地图,面向对象,异常,功能代码
    在SpringBoot中,可以通过编写拦截器(Interceptor)来对请求进行拦截与处理。下面是一个简单的拦截器实现示例:创建一个类并实现HandlerInterceptor接口publicclassAuthInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(HttpServletRequest......
  • Springboot上传文件大小限制处理
    今天在开发过程中遇到一个文件上传的问题io.undertow.server.RequestTooBigException:UT000020:Connectionterminatedasrequestwaslargerthan10485760Servlet容器使用的是undertow,看异常信息应该是默认存在10MB的文件大小限制。百度了一下,找到如下配置,问题得以解决,记......
  • Spring Cloud整体架构解析
    SpringCloud整体架构SpringCloud的中文名我们就暂且称呼它为“春云”吧,听上去是多么朴实无华的名字,不过呢一般名字起的低调的都是厉害角色,我们就看看SpringCloud都提供了哪些靠谱功能吧。SpringCloud是一款微服务架构的一站式解决方案,你在微服务化过程中碰到的任何问题,都可......
  • SpringSecurity表单认证(二)
    用户名+密码系统默认登录用户名:user密码每次服务启动后随机生成密码用户信息获取原理(数据库获取)实现该接口,security默认自动生成密码关闭。框架源码:packageorg.springframework.security.core.userdetails;publicinterfaceUserDetailsService{UserDetailsloa......
  • [spring] spring学习笔记(1): 通过xml实现依赖注入(1)
    依赖注入是spring框架中一个重要思想-InversionofControl(IoC)-的实现,大体上来说,就是通过配置Bean对象,让spring内置的方法来为主对象创建需要的依赖对象;打个比方,在java中,当我们想要使用某个类时,应当通过new关键字来指定,i.e.//在这里创建一个类,他需要使......
  • Spring 工具:DigestUtils md5 摘要工具
    工具类:org.springframework.util.DigestUtils作用:计算字节数组、输入流的md5摘要所在模块:spring-core方法描述Stringmd5DigestAsHex(byte[]bytes)返回字节数组的md5摘要(计算字符串)Stringmd5DigestAsHex(InputStreaminputStream)返回输入流的md5......
  • Spring 工具:StopWatch 计时器
    工具类:org.springframework.util.StopWatch作用:记录方法执行耗时,统计每个方法的耗时占比所在模块:spring-core方法描述voidstart(StringtaskName)开始一个新的监测任务,可设置任务名称。记录当前时间和任务名称voidstop()结束当前监测任务。记录任务执行......
  • 聊聊如何实现动态加载spring拦截器
    前言之前写过一篇文章聊聊如何实现热插拔AOP,今天我们继续整一个类似的话题,聊聊如何实现spring拦截器的动态加载实现核心思路groovy热加载java+事件监听变更拦截器实现步骤1、在项目的pom引入groovyGAV<dependency><groupId>org.codehaus.groovy</groupI......
  • SpringBoot自定义注解实现操作日志记录
    1、增加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>${spring-version}</version>......
  • Spring整合junit 5
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache......