Spring框架DI入门案例

【转载】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();
	}
}

测试结果:



猜你喜欢

转载自blog.csdn.net/pcwl1206/article/details/80634440
今日推荐