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、通过接口注入(没有实例)