Spring框架——基于xml文件的相关配置

1.IOC创建对象

  • 通过 < bean id=“” class=“”>标签来创建对象
    id为IOC创建对象所产生的对象名,class为类的全路径,默认调用无参构造函数,为每个属性赋予默认初始值
<bean id="stu" class="com.system.entity.Student"></bean>
<!-- 调用默认构造方法,属性值只能复制默认值 -->
  • 通过调用setXXX方法注入属性值
    使用< property >标签给属性注入初始值,name为属性名,value为对应属性值,若要给一个对象注入属性值,则需要用ref属性,将其他bean的id赋值给他
<bean id="stu" class="com.system.entity.Student">
	<property name="id" value="1001"></property>
	<property name="name" value="张安"></property>
	<property name="age" value="25"></property>
	<property name="dept" ref="dept"></property>
</bean>
  • 通过调用有参构造函数注入属性值
<!-- 构造方法注入属性值 -->
<!-- 方法一,用index属性顺序赋值,注意赋值顺序不能乱,0 1 2 3 .... -->
<bean id="stu2" class="com.system.entity.Student">
	<constructor-arg index="0" value="1002"></constructor-arg>
	<constructor-arg index="1" value="李四"></constructor-arg>
	<constructor-arg index="2" value="23"></constructor-arg>
</bean>

<!-- 方法二,用name属性赋值,name为类的属性名,赋值顺序可以乱 -->
<bean id="stu3" class="com.system.entity.Student">
	<constructor-arg name="name" value="王五"></constructorarg>
	<constructor-arg name="id" value="1003"></constructor-arg>
	<constructor-arg name="age" value="22"></constructor-arg>
</bean>
  • 对象集合注入属性值
    List<>类型采用:< list > 标签
    int[] 数组类型采用:< array > 标签
    采用< ref >标签来给每个对象注入属性值,将其他Bean的id赋给bean属性
<bean id="dept" class="com.system.entity.Dept">
	<!-- 一对多 -->
	<property name="empList">
		<list>
			<ref bean="pq"></ref>
			<ref bean="gtq"></ref>
		</list>
	</property>
</bean>
  • 使用p前缀来代替property,简化配置
    对象属性采用 p:XXX-ref=“bean的id”来赋值(多对一)
<bean id="dept" class="com.system.entity.Dept" p:deptno="10"
	p:dname="技术支持部" p:loc="上海">
</bean>
<bean id="emp" class="com.system.entity.Emp" p:empno="8899"
	p:ename="佩奇" p:job="主管" p:sal="10000.00" p:comm="800.00" p:dept-ref="dept">
</bean>
  • 自动装配(对象注入)
    在bean标签中,采用autowire属性自动为对象注入属性值(注意两个类之间不能互相自动装配,即emp对象自动装配dept对象,那么dept对象就不能自动装配emp对象
    byName:通过 属性的名字 完成自动装配
<bean id="dept" class="com.system.entity.Dept">
	<property name="deptno" value="10"></property>
	<property name="dname" value="技术支持部"></property>
	<property name="loc" value="上海"></property>
</bean>

<bean id="emp" class="com.system.entity.Emp" autowire="byName">
	<property name="empno" value="8899"></property>
	<property name="ename" value="佩奇"></property>
	<property name="job" value="主管"></property>
	<property name="sal" value="10000.00"></property>
	<property name="comm" value="800.00"></property>
	<!-- <property name="dept" ref="dept"></property>-->
</bean>

byType:通过属性的 数据类型 完成自动装配,属性名和bean的id可以不相等

<bean id="dept22" class="com.system.entity.Dept">
	<property name="deptno" value="10"></property>
	<property name="dname" value="技术支持部"></property>
	<property name="loc" value="上海"></property>
</bean>

<bean id="emp" class="com.system.entity.Emp" autowire="byType">
	<property name="empno" value="8899"></property>
	<property name="ename" value="佩奇"></property>
	<property name="job" value="主管"></property>
	<property name="sal" value="10000.00"></property>
	<property name="comm" value="800.00"></property>
	<!-- <property name="dept" ref="dept"></property>-->
</bean>

2.Bean的作用域

通过设置< bean >标签里的scope属性可以设置该Bean的作用域

  • singleton:单例(单个实例、单个对象),程序在使用Ioc容器获得bean对象是同一个对象。 该属性为默认属性
  • prototype:原型,程序在使用Ioc容器获得Bean对象是不同的,每次getBean()方法调用一次,创建一个新的Bean对象。
<bean id="stu" class="com.system.entity.Student" scope="prototype">
	<property name="id" value="1001"></property>
	<property name="name" value="张安"></property>
	<property name="age" value="25"></property>
</bean>

3.Bean的继承

  • Bean的继承区别于Java类的继承,其继承是一种对象属性值的继承!!
  • 通过parent属性来指定继承的beang,parent=“bean的id”
  • 继承的属性值,可以在子bean中对该属性值进行覆盖
<bean id="stu" class="com.system.entity.Student" >
	<property name="id" value="1001"></property>
	<property name="name" value="张安"></property>
	<property name="age" value="25"></property>
</bean>
<bean id="stu2" class="com.system.entity.Student" parent="stu">
	<!-- 针对继承过来的属性值,可以在子bean中进行覆盖 -->
	<property name="name" value="李四"></property>
</bean>

4.读取外部资源(导入资源文件)

  • 在Spring.xml配置文件中添加该属性
<!-- 导入外部资源文件
    classpath前缀限定匹配范围:只匹配我的classes这一级目录的文件(不包含子目录)
    classpath*前缀:匹配范围还包括其他jar包的classes目录
-->
<context:property-placeholder location="classpath:db.properties"></context:property-placeholder>

目录

  • 通过Spring.xml配置文件中使用 ${键} 的方式引用资源文件里的值
<!-- 创建Bean,数据源对象,读取db.properties -->
<bean id="dataSource" class="com.system.entity.DataSource">
   <property name="driver" value="${jdbc.driver}"></property>
   <property name="url" value="${jdbc.url}"></property>
   <property name="username" value="${jdbc.username}"></property>
   <property name="password" value="${jdbc.password}"></property>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值