在spring框架中,主要有以下四種依賴注入的方式
setter方法注入構造器注入靜態方法注入實例工廠注入
在實際的運用中主要使用前兩種,所以在本文中也主要介紹前兩種DI方式
示例1:setter方法依賴注入
目錄結構如下: 
配置文件bean.xml:
<?xml version="1.0" encoding="UTF-8"?><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="HelloWorldHelprt" class="com.main.autowrite.DI.HelloWorldHelper"> <property name="helloWorldImpl" ref="helloWorldImpl" /> </bean> <bean id="helloWorldImpl" class="com.main.autowrite.DI.HelloWorldImpl"/></beans>HelloWorld.java
package com.main.autowrite.DI;public interface HelloWorld { public void sayHello();}HelloWorldImpl.java
package com.main.autowrite.DI;public class HelloWorldImpl implements HelloWorld{ public void sayHello() { System.out.println("Hello world"); }}HelloWorldHelper.java
package com.main.autowrite.DI;public class HelloWorldHelper { private HelloWorldImpl helloWorldImpl; public HelloWorldHelper(){ } public void setHelloWorldImpl(HelloWorldImpl helloWorldImpl){ this.helloWorldImpl = helloWorldImpl; } public void sayHello(){ helloWorldImpl.sayHello(); }}測試方法:
@Test public void test(){ applicationContext context = new ClassPathXmlApplicationContext("com/main/autowrite/DI/bean.xml"); HelloWorldHelper helper = (HelloWorldHelper)context.getBean("HelloWorldHelprt"); helper.sayHello(); }例子2:構造器方法依賴注入
在例子1的基礎上
修改HelloWorldHelper類如下:
package com.main.autowrite.DI;public class HelloWorldHelper { private HelloWorldImpl helloWorldImpl; public HelloWorldHelper(HelloWorldImpl helloWorldImpl){ this.helloWorldImpl = helloWorldImpl; } public void sayHello(){ helloWorldImpl.sayHello(); }}bean.xml
<?xml version="1.0" encoding="UTF-8"?><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="HelloWorldHelprt" class="com.main.autowrite.DI.HelloWorldHelper"> <constructor-arg> <ref bean="helloWorldImpl" /> </constructor-arg> </bean> <bean id="helloWorldImpl" class="com.main.autowrite.DI.HelloWorldImpl"/></beans>測試方法和例子1的一致,無需更改
兩個例子的運行結果均是下圖的結果: 
如需了解靜態工廠以及實例工廠的依賴注入,請點擊這里學習
新聞熱點
疑難解答