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>

效果图

posted @ 2021-01-17 22:48  L、yJ  阅读(147)  评论(0)    收藏  举报