- IOC 基础 (控制反转)
- UserDao
- UserDaoImpl
- UserService
- UserServiceImpl
IOC原型:降低耦合性 ,更加专注于业务的实现上
IOC本质:一种设计思想,DI(依赖注入)是实现IOC的一种方法
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。
- 开始试验
配置Spring xml文件 application.xml并注册bean
<?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="userDao" class="com.sl.ioc.Imp.UserDaoImpl"/>
</beans>
UserDao 代码如下(interface接口)
public interface UserDao {
public void Say();
}
实现类接口 UserDaoImpl代码如下(class)
package com.sl.ioc.Imp;
import com.sl.ioc.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void Say() {
System.out.println("UserDao say hello word!");
}
}
创建IOC测试类
import com.sl.ioc.dao.UserDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class text {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao)context.getBean("userDao");
userDao.Say();
}
}
当有一个实现类一个接口时,输出结果为
再建立一个接口和实现类,并初注册bean
UserService 接口 代码
package com.sl.ioc.service;
public interface UserService {
public void say();
}
UserServiceImpl实现类代码
package com.sl.ioc.service.Impl;
import com.sl.ioc.dao.UserDao;
import com.sl.ioc.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao dao;
public void setDao(UserDao dao) {
this.dao = dao;
}
@Override
public void say() {
this.dao.Say();
System.out.println("Uservice say hello");
}
}
1. 注册bean
<bean id="uservice" class="com.sl.ioc.service.Impl.UserServiceImpl">
<property name="dao" ref="userDao"></property>
</bean>
2.实现类代码
import com.sl.ioc.dao.UserDao;
import com.sl.ioc.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class text {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService uservice = (UserService)context.getBean("uservice");
uservice.say();
}
}
运行结果
实验说明
由主动的编程变成被动的接收可以通过new ClassPathXmlApplicationContext去浏览一下底层源码
**OK , 到了现在 , 我们彻底不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 ! **