Spring 专题
专题目录
您的位置:java > Spring专题 > Spring通过构造方法依赖注入
Spring通过构造方法依赖注入
作者:--    发布时间:2019-11-20
使用spring进行依赖,通过构造函数注入一个bean。

1. ioutputgenerator

接口和实现类
package com.h3.output;
 
public interface ioutputgenerator
{
	public void generateoutput();
}
package com.h3.output.impl;
 
import com.h3.output.ioutputgenerator;
 
public class jsonoutputgenerator implements ioutputgenerator
{
	public void generateoutput(){
		system.out.println("this is json output generator");
	}
}

2. helper类

一个辅助类,之后使用spring 通过构造方法注入 ioutputgenerator。
package com.h3.output;

import com.h3.output.ioutputgenerator;

public class outputhelper {
	ioutputgenerator outputgenerator;

	public void generateoutput() {
		outputgenerator.generateoutput();
	}

	//di via constructor
	public outputhelper(ioutputgenerator outputgenerator){
		this.outputgenerator = outputgenerator;
	}
	
}

3. spring配置

请参阅下面的 spring bean 配置,spring 将通过构造函数注入上面的 “jsonoutputgenerator” 到 “outputhelper” 类,“public outputhelper(ioutputgenerator outputgenerator)“.

<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-2.5.xsd">

	<bean id="outputhelper" class="com.h3.output.outputhelper">
		<constructor-arg>
			<ref bean="jsonoutputgenerator" />
		</constructor-arg>
	</bean>
 
	<bean id="jsonoutputgenerator" class="com.h3.output.impl.jsonoutputgenerator" />

</beans>

4.执行结果

载入一切东西,并运行它。
package com.h3.common;

import org.springframework.context.applicationcontext;
import org.springframework.context.support.classpathxmlapplicationcontext;
import com.h3.output.outputhelper;

public class app {
	public static void main(string[] args) {
		applicationcontext context = new classpathxmlapplicationcontext(
				"applicationcontext.xml"); outputhelper output = (outputhelper)context.getbean("outputhelper");
    	        output.generateoutput();
	}
}

输出结果

this is json output generator
构造方法类型歧义
对于构造函数支持多个参数,会导致公共的构造注入类型歧义的问题,请阅读详细的解决方案


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册