欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 前端技术 > javascript >内容正文

javascript

[spring framework]学习笔记--dependency injection(di) -凯发ag旗舰厅登录网址下载

发布时间:2024/10/12 javascript 22 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 [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,通过参数位置。
index="0" value="7500000"/> index="1" value="42"/>
  //方式3,通过参数名字。
name="years" value="7500000"/> name="ultimateanswer" value="42"/> bean>

对象类型实例

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旗舰厅登录网址下载为你收集整理的[spring framework]学习笔记--dependency injection(di)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图