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 依赖注入方式实现的更多相关文章
- 控制反转IOC的依赖注入方式
引言: 项目中遇到关于IOC的一些内容,因为和正常的逻辑代码比较起来,IOC有点反常.因此本文记录IOC的一些基础知识,并附有相应的简单实例,而在实际项目中再复杂的应用也只是在基本应用的基础上扩展而来 ...
- 一步一步深入spring(3)--spring的依赖注入方式
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,sprin ...
- 深入浅出spring IOC中三种依赖注入方式
深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...
- 转:深入浅出spring IOC中四种依赖注入方式
转:https://blog.csdn.net/u010800201/article/details/72674420 深入浅出spring IOC中四种依赖注入方式 PS:前三种是我转载的,第四种是 ...
- spring四种依赖注入方式(转)
spring四种依赖注入方式!! 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提 ...
- ASP.NET Core应用的7种依赖注入方式
ASP.NET Core框架中的很多核心对象都是通过依赖注入方式提供的,如用来对应用进行初始化的Startup对象.中间件对象,以及ASP.NET Core MVC应用中的Controller对象和V ...
- 给力啊!这篇Spring Bean的依赖注入方式笔记总结真的到位,没见过写的这么细的
1. Bean的依赖注入概念 依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现.在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是 ...
- Spring 依赖注入方式详解
平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...
- spring六种种依赖注入方式
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程 ...
随机推荐
- Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099
方法:把catalina.bat 文件中set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m这行去掉,具体看下面两篇博客 https://blo ...
- C++-有感
今日在图书馆待了差不多一天,我都忘了我吃饭了没,拿着看视频学习,没啦,主要还是看书,突然感觉有点写不动了. 明天开始不带电脑了,准备把数据结构书重新过一遍,算了,还是不用C++写了,感觉C++居然做题 ...
- orcal时区
查询数据库时区 select dbtimezone from dual 修改时区 alter database set time_zone='+8:00';
- Hackintosh Issues 10.13.x
Issuses 1: 出现禁行: (-v:) allcating 0x800 pages at 0x2000000 alloc type 2 Load kernal from stream Load ...
- Python之路【第三十二篇】:django 分页器
Django的分页器paginator 文件为pageDemo models.py from django.db import models # Create your models here. cl ...
- 接口出现无法执行curl 开启cgi
问题描述: 路由能正常访问,但认证失败, 由于请求需要执行,curl -X GET "http://api.jr.com/v1/salary/list" -H "acce ...
- input:file上传文件类型(记录)
imput 属性有以下几种: 1.type:input类型这就不多说了2.accept:表示可以选择的文件类型,多个类型用英文逗号分开,常用的类型见下表. <input id="fil ...
- AcWing 差分一维加二维
一维 #include<bits/stdc++.h> using namespace std ; ; int n,m; int a[N],b[N]; //a为前缀和,b为差分 差分和前缀和 ...
- java 快捷表达式
:: 和 -> 主要说这两个,这个好像也叫:Lambda表达式 但我不知道对不对,就先叫他 “快捷表达式“,顾名思义:使用它,可以省很多代码,可以用来装X,但不便于阅读. 这种东西呢,虽 ...
- C#中的@和$ 占位符
c#中@的三种用法: 1.忽略转移字符 string str = "C:\\windows\\system32"; string str = @"C:\windows\s ...