当前位置:
ag凯发k8国际 >
前端技术
> javascript
>内容正文
javascript
[spring framework]学习笔记--dependency injection(di) -ag凯发k8国际
ag凯发k8国际
收集整理的这篇文章主要介绍了
[spring framework]学习笔记--dependency injection(di)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1. 通过构造函数实现di
简单类型实例
package examples;public class examplebean {// number of years to calculate the ultimate answerprivate int years;// the answer to life, the universe, and everythingprivate string ultimateanswer;//如果不能在debug模式下进行编译,必须要加下面一行。针对下面的方式3,通过参数名字。
@constructorproperties({"years", "ultimateanswer"}) public examplebean(int years, string ultimateanswer) {this.years = years;this.ultimateanswer = ultimateanswer;}}
相应的xml配置为
<bean id="examplebean" class="examples.examplebean">//方式1,通过类型,如果存在两个参数同类型的话,不行。<constructor-arg type="int" value="7500000"/><constructor-arg type="java.lang.string" value="42"/>
//方式2,通过参数位置。
//方式3,通过参数名字。
对象类型实例
package x.y;public class foo {public foo(bar bar, baz baz) {// ... }}xml配置
<beans><bean id="foo" class="x.y.foo"><constructor-arg ref="bar"/> <constructor-arg ref="baz"/>bean><bean id="bar" class="x.y.bar"/><bean id="baz" class="x.y.baz"/> beans>参数也可以像下面这样指定
<constructor-arg><ref bean="bar"/>constructor-arg>如果是通过工厂模式,可以采用下面的方式
<bean id="examplebean" class="examples.examplebean" factory-method="createinstance"><constructor-arg ref="anotherexamplebean"/><constructor-arg ref="yetanotherbean"/><constructor-arg value="1"/> bean><bean id="anotherexamplebean" class="examples.anotherbean"/> <bean id="yetanotherbean" class="examples.yetanotherbean"/> public class examplebean {// a private constructorprivate examplebean(...) {...}// a static factory method; the arguments to this method can be// considered the dependencies of the bean that is returned,// regardless of how those arguments are actually used.public static examplebean createinstance (anotherbean anotherbean, yetanotherbean yetanotherbean, int i) {examplebean eb = new examplebean (...);// some other operations...return eb;}}
2. 通过set方法来实现di
<bean id="examplebean" class="examples.examplebean"><property name="beanone"><ref bean="anotherexamplebean"/>property><property name="beantwo" ref="yetanotherbean"/><property name="integerproperty" value="1"/> bean><bean id="anotherexamplebean" class="examples.anotherbean"/> <bean id="yetanotherbean" class="examples.yetanotherbean"/>注:property的name是和set方法中的名字一致的。
public class examplebean {private anotherbean beanone;private yetanotherbean beantwo;private int i;public void setbeanone(anotherbean beanone) {this.beanone = beanone;}public void setbeantwo(yetanotherbean beantwo) {this.beantwo = beantwo;}public void setintegerproperty(int i) {this.i = i;}}
总结:在我们日常的工程中,上面两种方式如何使用呢?
可以从需要来看,如果这个属性是必须的,那就放在构造函数中;如果是可选的,那就用set的方式好了。
转载于:https://www.cnblogs.com/lemonbar/p/3896863.html
总结
以上是ag凯发k8国际为你收集整理的[spring framework]学习笔记--dependency injection(di)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: