概述
【转载】Spring的IoC(控制反转) 、DI(依赖注入)
一、DI简介
DI(Dependency Injection):依赖注入。
依赖:一个对象需要使用另一个对象
注入:通过setter方法进行另一个对象实例设置
例如:
class BookServiceImpl{
//之前的开发:接口 = 实现类(service和dao耦合)
private BookDao bookDao = new BookDaoImpl();
//使用Spring之后(解耦:service实现类使用dao接口,不知道具体的实现类)
private BookDao bookDao;
setter方法
}
模拟Spring执行过程:
创建Service实例:BookService bookService = new BookServiceImpl(); //IOC<bean>
创建Dao实例:BookDao bookDao = new BookDaoImpl(); //IOC
将Dao设置给Service:bookService.setBookDao(bookDao); //DI <property>
二、DI的入门案例
第一步:创建工程,导入jar包
4+1:4个核心(beans、core、context、expression)+1个依赖(commons-logging...jar)。
第二步:目标类
BookDao接口:
package com.zju.dao;
public interface BookDao {
public void addBook();
}
BookDaoImpl实现类:
package com.zju.dao.impl;
import com.zju.dao.BookDao;
public class BookDaoImpl implements BookDao {
@Override
public void addBook() {
System.out.println("====开始添加书籍了====");
}
}
BookService接口:
package com.zju.service;
public interface BookService {
public abstract void addBook();
}
BookServiceImpl实现类:
package com.zju.service.impl;
import com.zju.dao.BookDao;
import com.zju.service.BookService;
public class BookServiceImpl implements BookService {
// 方式一:没有使用Spring之前 接口=实现类
// private BookDao bookDao = new BookDaoImpl();
// 方式二:接口+setter
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
@Override
public void addBook() {
this.bookDao.addBook();
}
}
第三步: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.xsd">
<!-- <property>:用于进行属性注入
name:bean的属性名,通过setter方法获得
setBookDao->BookDao->bookDao
ref:另一个bean的id值的引用
-->
<!-- 创建service -->
<bean id="bookServicedId" class="com.zju.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDaoId"></property>
</bean>
<!-- 创建dao实例 -->
<bean id="bookDaoId" class="com.zju.dao.impl.BookDaoImpl"></bean>
</beans>
第四步:测试
package com.zju.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zju.service.BookService;
public class TestDemo2 {
@Test
public void demo2() {
String xmlPath = "/applicationContext.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
BookService bookService = (BookService) applicationContext.getBean("bookServiceId");
bookService.addBook();
}
}
测试结果:
最后
以上就是美丽唇膏为你收集整理的Spring框架DI入门案例的全部内容,希望文章能够帮你解决Spring框架DI入门案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复