//測驗類
package com.itheima.a_dii;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDI {
@Test
public void demo02(){
String xmlPath = "com/itheima/a_di/beans.xml";
//加載組態檔,執行組態檔里的陳述句
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
BookService bookService = (BookService) applicationContext.getBean("bookServiceId");
/**
* 當執行addBook的時候,先找到UserService實體類
* 由于剛才執行組態檔,已經將dao注入到servic了,所以可以呼叫到BookServiceImpl中的addBook方法
* 由于addBook方法中呼叫了BookDao中的adddBook方法,所以可以執行adddBook中的代碼
*/
bookService.addBook();
}
}
//beans.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">
<!--
模擬spring執行程序
創建service實體:BookService bookService = new BookServiceImpl() IoC <bean>
創建dao實體:BookDao bookDao = new BookDaoImple() IoC
將dao設定給service:bookService.setBookDao(bookDao); DI <bean>的子標簽:<property>
!-->
<!-- 既然是將dao注入到service,就得寫一個配置資訊property -->
<!-- property 用于屬性注入
name:bean的屬性名,通過setter方法獲得
BookServiceImpl中SetBookDao方法中的屬性為bookDao
ref:另一個bean的id值的參考
-->
<!-- 在new一個物件之前(UserService),會先詢問還需不需要創建別的
執行property的name,證明需要新建一個BookDao,于是先去創建一個dao實體
創建完dao之后,再來創建service,創建完service后執行ref,看看需不需要dao
結果需要,將dao的id放到ref處,就把dao層注入到serv中了
-->
<!-- 創建service -->
<bean id="bookServiceId" class="com.itheima.a_di.BookServiceImpl">
<property name="bookDao" ref="bookDaoId"></property>
</bean>
<!-- 創建dao實體 -->
<bean id="bookDaoId" class="com.itheima.a_di.BookDaoImpl">
</bean>
</beans>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/19330.html
標籤:Eclipse
