當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
[Spring Framework]学习笔记--Dependency injection(DI)
生活随笔
收集整理的這篇文章主要介紹了
[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,通過參數位置。
<constructor-arg index="0" value="7500000"/> <constructor-arg index="1" value="42"/>
//方式3,通過參數名字。
<constructor-arg name="years" value="7500000"/> <constructor-arg 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"><!-- setter injection using the nested ref element --><property name="beanOne"><ref bean="anotherExampleBean"/></property><!-- setter injection using the neater ref attribute --><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
總結
以上是生活随笔為你收集整理的[Spring Framework]学习笔记--Dependency injection(DI)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想主机怎么重装系统 联想电脑如何重新安
- 下一篇: win10怎么关通知 Win10如何关闭