Spring依赖注入

【构造参数注入】

类有构造方法

public class ServiceTemplate {
	private JmsMessageSender jmsMessageSender;
	private EmailMessageSender emailMessageSender;
	private WebServiceInvoker webServiceInvoker;
	
	public ServiceTemplate(JmsMessageSender jmsMessageSender, EmailMessageSender emailMessageSender,
			WebServiceInvoker webServiceInvoker) {
		this.jmsMessageSender = jmsMessageSender;
		this.emailMessageSender = emailMessageSender;
		this.webServiceInvoker = webServiceInvoker;

		logger.info("Invoked constructor: ServiceTemplate(JmsMessageSender jmsMessageSender,"
				+ "EmailMessageSender emailMessageSender," + "WebServiceInvoker webServiceInvoker) ");
	}
}

配置文件中使用constructor-arg指定相应的值

<bean id="serviceTemplate"
	class="sample.spring.chapter03.bankapp.base.ServiceTemplate">
	<!--可以通过自动类型判断来寻找合适的构造参数-->
	<constructor-arg name="emailMessageSender" ref="emailMessageSender" />
	<constructor-arg name="jmsMessageSender" ref="jmsMessageSender" />
	<constructor-arg name="webServiceInvoker" ref="webServiceInvoker" />
</bean>

<bean id="jmsMessageSender"
	class="sample.spring.chapter03.bankapp.base.JmsMessageSender" />
<bean id="webServiceInvoker"
	class="sample.spring.chapter03.bankapp.base.WebServiceInvoker" />
<bean id="emailMessageSender"
	class="sample.spring.chapter03.bankapp.base.EmailMessageSender" />

【Set方法注入】

源码


public class FixedDepositController {
	private static Logger logger = LogManager
			.getLogger(FixedDepositController.class);

	private FixedDepositService fixedDepositService;

	public FixedDepositController() {
		logger.info("initializing");
	}

	public void setFixedDepositService(FixedDepositService fixedDepositService) {
		logger.info("Setting fixedDepositService property");
		this.fixedDepositService = fixedDepositService;
	}

	public boolean submit() {
		return fixedDepositService.createFixedDeposit(new FixedDepositDetails(
				1, 10000, 365, "someemail@something.com"));
	}

	public FixedDepositDetails get() {
		return fixedDepositService.getFixedDepositDetails(1L);
	}
}
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="controller"
		class="sample.spring.chapter01.bankapp.FixedDepositController">
		<property name="fixedDepositService" ref="service" />
	</bean>

	<bean id="service"
		class="sample.spring.chapter01.bankapp.FixedDepositService">
		<property name="fixedDepositDao" ref="dao" />
	</bean>

	<bean id="dao" class="sample.spring.chapter01.bankapp.FixedDepositDao" />
</beans>

spring-beans.xsd schema中定义的<beans>元素是应用程序上下文的XML文件的根元素。

图示

在这里插入图片描述

Spring容器创建bean的顺序取决于它们在applicationContext.xml文件中的定义顺序。Spring容器确保在调用setter方法之前完全配置了一个bean的依赖关系。例如FixedDepositController Bean依赖于FixedDepositService Bean,那在调用FixedDepositController的set方法前,Spring容器会配置好
FixedDepositService

set方法注入可以和构造器注入结合

【POJO注解注入】

【@Configuration注解注入】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值