spring依赖注入 注入值 spring表达式

依赖注入

方式一 使用set方式注入

public class A {
	private IB b;

	public void setB(IB b) {
		System.out.println("setB()");
		this.b = b;
	}

	public A() {
		System.out.println("A()");
	}
	public void execute(){
		System.out.println("execute()");
		b.f1();
	}
}

public class B implements IB{

	public B() {
		System.out.println("B()");
	}
	
	public void f1(){
		System.out.println("B's f1()");
	}
	
}

	<bean id="b1" class="ioc.B" />
	
	<!-- 
		property元素:表示使用set方法来注入依赖关系.
		其中,name属性指定属性名,ref属性指定属性值(是被注入bean的id)
	 -->
	<bean id="a1" class="ioc.A" >
		<property name="b" ref="b1"/>
	</bean>

方式二 构造器方式注入

package ioc2;

public class A {
	private B b;
	public A() {
		System.out.println("A()");
	}

	public void execute(){
		System.out.println("execute()");
		b.f1();
	}

	public A(B b) {
		System.out.println("A(B)");
		this.b = b;
	}
}
<bean id="b1" class="ioc2.B"></bean>
	<!-- 
		constructor-arg元素:用来配置构造器方式注入.
		index属性:指定参数的下标(从0开始)
	 -->
	<bean id="a1" class="ioc2.A">
		<constructor-arg index="0" ref="b1"/>
	</bean>

方式三 自动装配

<!-- 
		autowire属性:让容器自动装配,该属性有如下3个值
		byName:容器依据类中的属性名查找对应的bean,然后调用对应的set方法来完成注入
		注:
		a.如果找不到对应的bean,注入null.
		b.不可能找到多个符合条件的bean.
		byType:容器依据类中的属性类型查找对应的bean,然后调用对应的set方法完成注入
		注:
		a.如果找不到对应的bean,注入null.
		b.有可能找到多个符合条件的bean,此时会出错.
		constructor:与byType类似,不同的是调用对应的构造器来完成注入
	 -->
	<bean id="wt" class="ioc2.Waiter"></bean>
	<bean id="rest" class="ioc2.Restaurant" autowire="constructor"></bean>

注入值

注入基本类型的值

	<bean id="sp1" class="value.SpelBean">
		<property name="name" value="zhangsan"></property>
	</bean>

注入集合类型的值

<bean id="vb1" class="value.ValueBean">
		<property name="name" value="胡八一"></property>
		<property name="age" value="30"></property>
		<property name="city">
			<list>
				<value>北京</value>
				<value>天津</value>
				<value>南京</value>
				<value>南京</value>
			</list>
		</property>
		<property name="interest">
			<set>
				<value>钓鱼</value>
				<value>做饭</value>
				<value>喝酒</value>
			</set>
		</property>
		<property name="score">
			<map>
				<entry key="英语" value="60"/>
				<entry key="math" value="66"/>
			</map>
		</property>
		<property name="db">
			<props>
				<prop key="username">Tiger</prop>
				<prop key="password">1234</prop>
			</props>
		</property>
	</bean>

将集合类型的值配置成一个bean

	<util:list id="cityBean">
		<value>上海</value>
		<value>深圳</value>
		<value>武汉</value>
	</util:list>
	
	<util:set id="interestBean">
		<value>书法</value>
		<value>绘画</value>
		<value>下棋</value>
	</util:set>
	
	<util:map id="scoreBean">
		<entry key="english" value="80"></entry>
		<entry key="math" value="99"></entry>
	</util:map>
	
	<util:properties id="dbBean">
		<prop key="username">Sally</prop>
		<prop key="password">1234</prop>
	</util:properties>

引用的方式注入集合类型的值

	<bean id="vb2" class="value.ValueBean">
		<property name="city" ref="cityBean"></property>
		<property name="interest" ref="interestBean"></property>
		<property name="score" ref="scoreBean"></property>
		<property name="db" ref="dbBean"></property>
	</bean>

读取配置文件

<!-- 
		读取properties文件的内容
		classpath:按照类路径来搜索
		spring容器会依据路径找到对应的properties文件,然后读取该文件的内容到properties对象
	 -->
	<util:properties id="config" location="classpath:config.properties"></util:properties>

spring表达式

	<bean id="sp1" class="value.SpelBean">
		<property name="name" value="#{vb1.name}"></property>
		<property name="city" value="#{vb1.city[1]}"></property>
		<property name="score" value="#{vb1.score['英语']}"></property>
		<property name="pageSize" value="#{config.pageSize}"></property>
	</bean>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值