Spring框架
IOC(控制反转)
问题:1.谁控制谁 2.什么叫反转 3.为何要这么做
举个例子:有如下的类
public interface IDao
public class ITopicDaoImpl implements IDao
public class IUsersDaoImpl implements IDao
public class IUsersServicesImpl
public class Test
其中:
public class IUserServicesImpl {
private IDao dao;
public IDao getDao() {
return dao;
}
public void setDao(IDao dao) {
this.dao = dao;
}
public void login(){
dao.add();
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.kerwin.spring.pojo.IUserServicesImpl;
public class Test {
public static void main(String[] args) {
// 1.加载配置文件
String[] locations = { "applicationContext.xml" };
ApplicationContext context = new ClassPathXmlApplicationContext(locations);
System.out.println(context);
IUserServicesImpl services = (IUserServicesImpl) context.getBean("services");
services.login();
}
}
applicationContext.xml代码:
<bean id="userdao" class="com.kerwin.spring.pojo.IUsersDaoImpl" ></bean>
<bean id="topicdao" class="com.kerwin.spring.pojo.ITopicDaoImpl"></bean>
<bean id="services" class="com.kerwin.spring.pojo.IUserServicesImpl">
<property name="dao" ref="userdao"></property>
</bean>
目前调用的是IUsersDaoImpl中的login()方法
如果想调用ITopicDaoImpl中的login()方法只需要替换
<bean id="services" class="com.kerwin.spring.pojo.IUserServicesImpl">
<property name="dao" ref="topicdao"></property>
</bean>