一,IOC概念
控制反转(IOC)是一种设计思想,它将对象的创建和依赖关系的管理交由框架或容器来实现,从而实现程序的松耦合。在传统的开发模式中,对象之间的依赖关系通常是由程序员在代码中直接创建和管理的。而在IOC模式中,程序员只需定义好对象和对象之间的依赖关系,而容器负责创建和管理对象,程序员只需要使用这些对象即可。
二,DI概念
依赖注入(DI)是IOC的一个重要实现方式,它指的是将依赖关系从应用程序中抽象出来,通过IOC容器将依赖关系注入到对象中,从而实现程序的松耦合。DI可以通过构造函数注入、Setter方法注入和字段注入等方式实现。
三,示例
1,(dao包)首先,我们需要定义一个接口BookDao
public interface BookDao {
void add();
}
2,接下来,我们定义一个实现BookDao接口的类BookDaoImpl
public class BookDaoImpl implements BookDao {
@Override
public void add() {
System.out.println("BookDaoImpl....add");
}
}
3,(service包)然后,定义一个接口BookService
public interface BookService {
void add();
}
4,然后定义二个实现BookService接口的类BookServiceImpl和BookServiceVip
public class BookServiceImpl implements BookService {
BookDao bookDao;
@Override
public void add() {
System.out.println("BookServiceImpl....add");
bookDao=new BookDaoImpl();
bookDao.add();
}
}
public class BookServiceVip implements BookService {
@Override
public void add() {
System.out.println("BookServiceVip...add");
}
}
5,Spring核心配置文件
在src根目录下建文件Spring.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.xsd">
<!--
id:给创建出来的对象起个名字
class:要创建对象对应类的全类名
-->
<bean id="book" class="com.smrsar.dao.impl.BookImpl"/>
<bean id="bookService" class="com.smrsar.service.Impl.BookServiceImpl">
<!--
通过property给类的撰性进行注入数据:默认使用的是setter方法
常规类型使用value注入:
对象使用ref引用上面定义的:
-->
<property name="bookDao" ref="book"/>
</bean>
</beans>
6,(test包)测试
package com.smrsar.test;
import com.smrsar.service.BookService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test01 {
BookService bookService;
@Test
public void Test01() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
bookService = (BookService) context.getBean("bookService");
bookService.add();
}
}