Spring_002 依赖注入方式实现
Posted leagueandlegends
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring_002 依赖注入方式实现相关的知识,希望对你有一定的参考价值。
继续写我们的第一个Spring程序,这次我们使用依赖注入的方式实现程序
第一步,建立我们的Spring_002程序,并在程序中添加BookDao.java、BookDaoImpl.java、BookService.java、BookServiceImpl.java、
ApplicationContext.xml
第二步 在BookDao接口中配置一个addBook方法
package com.zk.myspring; public interface BookDao { public void addBook(); }
在BookDaoImpl中实现addBook方法
package com.zk.myspring; public class BookDaoImpl implements BookDao{ @Override public void addBook() { // TODO Auto-generated method stub System.out.println("addBook"); } }
在BookService接口中配置addBook方法
package com.zk.myspring; public interface BookService { public abstract void addBook(); }
在BookServiceImpl方法中实现addBook方法
package com.zk.myspring; public class BookServiceImpl implements BookService{ //方式一:接口等于实现类 //private BookDao bookDao=new BookDaoImpl(); //方式二:接口+set方法 private BookDao bookdao; public void setBookdao(BookDao bookdao) {//依赖注入 this.bookdao = bookdao; } @Override public void addBook() { // TODO Auto-generated method stub //this.bookdao.addBook(); System.out.println("add book"); } }
注意在BookServiceImpl文件中,我们使用接口+set方法实现,并在setBookdao方法中实现依赖注入,使得BookService依赖于BookDao
第三步 配置我们的ApplicationContext.xml,使用property属性将BookDao注入进BookService
<property name="bookdao" ref="bookDaoId"></property>
<property> 用于属性注入
name:bean的属性名,通过setter方法获得
ref:另一个bean的id值的引用
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- 创建Dao --> <!-- 模拟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方法获得 ref:另一个bean的id值的引用 --> <!--创建Dao --> <bean id="bookDaoId" class="com.zk.myspring.BookDaoImpl"></bean> <!-- 创建service --> <bean id="bookServiceId" class="com.zk.myspring.BookServiceImpl"> <property name="bookdao" ref="bookDaoId"></property> </bean> </beans>
第四步 创建一个test方法,对配置文件进行测试
package com.zk.myspring; import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; public class TestBook { public static void main(String[]args) { //从spring容器中获得 String path="ApplicationContext.xml"; ApplicationContext ac=new ClassPathXmlApplicationContext(path); BookService bs=(BookService) ac.getBean("bookServiceId"); bs.addBook(); } @Test public void test1(){ //使用BeanFactory实例化 String path="ApplicationContext.xml"; BeanFactory bf=new XmlBeanFactory(new ClassPathResource(path)); BookService bs=(BookService) bf.getBean("bookServiceId"); bs.addBook(); } }
得出输出
依赖注入方式配置spring成功
以上是关于Spring_002 依赖注入方式实现的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot脚手架项目002-004.Spring IOC_权限管理系统_Spring:什么是IOCSpring Bean注入SpringBean的注解bean的加载流程