Spring+SpringMvc+Mybatis 基础(一)
一、控制反转(IoC)
Ioc译为“控制反转”或是“控制反向”等,Ioc不是一种技术,而是一种设计思想。指创建对象的控制权的转移,以前创建对象的主动权和时机是由自己把控的(自己new对象),而现在这种权力转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象之间松散耦合,也利于功能的复用。
二、依赖注入(DI)
DI(依赖注入)是指IoC容器在运行时动态的将某种依赖关系注入到对象之中。事实上,依赖注入(DI)和控制反转(IoC)是对同一事情的不同描述,依赖注入是从应用程序角度描述,即应用程序依赖容器创建并注入所需要的外部资源;而控制反转则是从容器的角度描述,由容器反向的向应用程序注入程序所需要的外部资源。这里的外部资源可以是外部实例对象,也可以是外部的文件对象等。
三、使用IoC/DI的好处
- 可维护性较好,便于单元测试、程序调试和诊断故障;
- 只关心自己的要实现业务逻辑,分工明确、责任清晰,提高开发效率和产品效率;
- 可复用性好,将具有普遍性的常用组件独立出来。
四、IoC/DI的实现
UserDao接口
package com.cn.ioc_di.dao;
public interface UserDao {
public void login();
}
实现类:UserDaoImpl.java
package com.cn.ioc_di.dao;
public class UserDaoImpl implements UserDao{
public void login() {
System.out.println("userDao login");
}
}
UserService接口
package com.cn.ioc_di.service;
public interface UserService {
public void login();
}
实现类: UserServiceImpl
package com.cn.ioc_di.service;
import com.cn.ioc_di.dao.UserDao;
public class UserServiceImpl implements UserService {
//1.声明userDao属性
private UserDao userDao;
//2.添加userDao属性的setter方法,用于实现依赖注入
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
//3.实现接口的方法
public void login() {
//4.调用userDao的方法,输出执行的语句
this.userDao.login();
System.out.println("userService login");
}
}
domian.java
package com.cn.ioc_di.domain;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.cn.ioc_di.service.UserService;
public class DI {
public static void main(String[] args) {
//1.初始化spring容器,加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.通过容器获取userService实例
UserService userService = (UserService)applicationContext.getBean("userService");
//3.调用实例中的login方法
userService.login();
}
}
applicationContext.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-4.3.xsd">
<!-- 将指定类配备给spring,让spring创建其对象实例 -->
<bean id="userDao" class="com.cn.ioc_di.dao.UserDaoImpl"></bean>
<bean id="userService" class="com.cn.ioc_di.service.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
效果图


浙公网安备 33010602011771号