1. 入门案例:DI
class BookServiceImpl{
private BookDao bookDao
;
setter方法
}
模拟spring执行过程
创建service实例:BookService bookService
= new BookServiceImpl() -->IoC
<bean>
创建dao实例:BookDao bookDao
= new BookDaoImple() -->IoC
将dao设置给service:bookService
.setBookDao(bookDao
); -->DI
<property>
1.1 目标类
创建BookService接口和实现类 创建BookDao接口和实现类 将dao和service配置 xml文件 使用api测试
1.2 dao
public interface BookDao {
public void save();
}
public class BookDaoImpl implements BookDao {
@Override
public void save() {
System
.out
.println("di add book");
}
}
1.3service
public interface BookService {
public abstract void addBook();
}
public class BookServiceImpl implements BookService {
private BookDao bookDao
;
public void setBookDao(BookDao bookDao
) {
this.bookDao
= bookDao
;
}
@Override
public void addBook(){
this.bookDao
.save();
}
}
1.4 配置文件
<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"
>
<!--
模拟spring执行过程
创建service实例:BookService bookService
= new BookServiceImpl() IoC
<bean>
创建dao实例:BookDao bookDao
= new BookDaoImpl() IoC
将dao设置给service:bookService
.setBookDao(bookDao
); DI
<property>
<property> 用于进行属性注入
name: bean的属性名,通过setter方法获得
setBookDao ##
> BookDao ##
> bookDao
ref :另一个bean的id值的引用
-->
<!-- 创建service
-->
<bean id
="bookServiceId" class="com.itheima.b_di.BookServiceImpl">
<property name
="bookDao" ref
="bookDaoId"></property
>
</bean
>
<!-- 创建dao实例
-->
<bean id
="bookDaoId" class="com.itheima.b_di.BookDaoImpl"></bean
>
</beans
>
1.5测试
@Test
public void demo01(){
String xmlPath
= "com/itheima/b_di/beans.xml";
ApplicationContext applicationContext
= new ClassPathXmlApplicationContext(xmlPath
);
BookService bookService
= (BookService
) applicationContext
.getBean("bookServiceId");
bookService
.addBook();
}