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的加载流程

Spring 依赖注入怎么回事,还有面向方面编程是怎么回事

SPRING01_概述配置文件bean实例化依赖注入的方式依赖注入的数据类型分模块开发API使用

Android片段和依赖注入

spring中依赖注入的原理

spring的依赖注入