spring IOC注入
IOC 的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器負責將這些聯繫在一起。 IoC 設計模式重點關注組件的依賴性、配置以及生命週期。 Ioc 設計模式實現了 “ 面向接口編程,而不是實現 ” 的原則。
IOC的三種依賴注入的方式:
第一種:setter方法注射 spring中常用的方式
public class GreetingServiceImpl implements GreetingService{
private String name;
private String say;
public GreetingServiceImpl(String name,String say) {
this.name = name;
this.say=say;
}
@Override
public void say() {
System.out.println("I want to say"+name+"。。。。。。"+say);
}
public void setSay(String say) {
this.say = say;
}
}
<beans>
<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">
<property name="say">
<value>你還好嗎?</value>
</property>
</bean>
</beans>
第二種:構造器注射
1、 根據構造器的索引注入
public class GreetingServiceImpl implements GreetingService{
private String name;
private String say;
public GreetingServiceImpl(String name,String say) {
this.name = name;
this.say=say;
}
@Override
public void say() {
System.out.println("I want to say"+name+"。。。。。。"+say);
}
}
<beans>
<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">
<!-- 構造器的索引注入-->
<constructor-arg index="0">
<value>曉麗</value>
</constructor-arg>
<constructor-arg index="1">
<value>想你了</value>
</constructor-arg>
</bean>
</beans>
2、 根據構造器的類型
public class GreetingServiceImpl implements GreetingService{
private String name;
private String say;
public GreetingServiceImpl(String name,String say) {
this.name = name;
this.say=say;
}
@Override
public void say() {
System.out.println("I want to say"+name+"。。。。。。"+say);
}
}
<beans>
<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">
<!-- 構造器的類型注入 -->
<constructor-arg type="java.lang.String">
<value>曉麗</value>
</constructor-arg>
<constructor-arg type="java.lang.String">
<value>我還好</value>
</constructor-arg></bean>
</beans>
3、通過接口注入(沒有實例)