Spring(三)入门案例DI(依赖注入)

网友投稿 602 2022-09-01

Spring(三)入门案例DI(依赖注入)

Spring(三)入门案例DI(依赖注入)

DI介绍

DI (Dependency Injection) 依赖注入

首先要明白: is a:自己是一个什么,在程序中即继承或接口,比如汽车是交通工具。 has a:有一个,程序中即有一个成员变量,换句话说就是类B中的代码有对类A的引用

class B{ private A a;//B类依赖A类

依赖注入解释

依赖:一个对象需要使用另一个对象 注入:通过setter方法进行另一个对象实例设置。

例如:

class BookServiceImpl{ //之前开发:接口 = 实现类 (service和dao耦合) //private BookDao bookDao = new BookDaoImpl(); //学习spring之后 (解耦:service实现类使用dao接口,不知道具体的实现类) private

要想使用DI 一定要为字段提供setter方法

模拟spring执行过程

创建service实例:BookService bookService = new BookServiceImpl() -->IoC 配置信息(bean)创建dao实例:BookDao bookDao = new BookDaoImple() -->IoC 配置信息(bean)将dao设置给service:bookService.setBookDao(bookDao); -->DI 配置信息(property)

目标类

创建目标类的过程为: * 创建BookService接口和实现类 * 创建BookDao接口和实现类 * 将dao和service配置xml到文件

创建BookService接口和实现类

package com.scx.di.test;public interface BookService { public void addBook();}

package com.scx.di.test;public class BookServiceImpl implements BookService{ private BookDao bookDao; public void setBookDao(BookDao bookDao) { this.bookDao = bookDao; } @Override public void addBook() { bookDao.addBook(); }}

创建BookDao接口和实现类

package com.scx.di.test;public interface BookDao { public void addBook();}

package com.scx.di.test;public class BookDaoImpl implements BookDao{ @Override public void addBook() { System.out.println("BookDaoImpl add a book."); }}

将dao和service配置xml到文件

模拟Spring过程

创建service实例:BookService bookService = new BookServiceImpl() –>IoC 配置信息(bean) 创建dao实例:BookDao bookDao = new BookDaoImple() –>IoC 配置信息(bean) 将dao设置给service:bookService.setBookDao(bookDao); –>DI 配置信息(property)

Junit测试

package com.scx.test;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.scx.di.test.BookDao;import com.scx.di.test.BookDaoImpl;import com.scx.di.test.BookService;import com.scx.di.test.BookServiceImpl;public class TestDI { @Test public void testDI(){ //之前开发 BookDao bookDao=new BookDaoImpl(); BookServiceImpl bookService1=new BookServiceImpl(); bookService1.setBookDao(bookDao); bookService1.addBook(); //学习Spring后 String xmlPath="com/scx/di/test/applicationContext.xml"; ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath); BookService bookService2=applicationContext.getBean("BookServiceId",BookService.class); bookService2.addBook();

运行结果

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PHP语言好不好?优势在哪里?(php语言好学吗)
下一篇:Connection cannot be null when 'hibernate.dialect' not set
相关文章

 发表评论

暂时没有评论,来抢沙发吧~