`
coolszy
  • 浏览: 1407111 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring学习笔记(5)----依赖注入的简单实现

阅读更多

Spring的核心机制是依赖注入。依赖注入让bean与bean之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。管是依赖注入,还是控制反转,都说明Spring采用动态、灵活的方式来管理各种对象。对象与对象之间的具体实现互相透明。

下面通过简单的实例演示依赖注入。

项目中主要包含一下一个文件:

 

UserDAO是一个接口,包含了一个方法:

package com.szy.spring.dao;

public interface UserDAO
{
	void show();
}

 

而UserDAO4MySqlImpl和UserDAO4OracleImpl实现了UserDAO中的方法。

package com.szy.spring.dao;
public class UserDAO4MySqlImpl implements UserDAO
{
	public void show()
	{
		System.out.println("MySqlDAO Implement");
	}
}

 

package com.szy.spring.dao;
public class UserDAO4OracleImpl implements UserDAO
{
	public void show()
	{
		System.out.println("OracleDAO Implement");
	}
}

 

UserService是另外一个包中的接口,

package com.szy.spring.service;

public interface UserService
{
	void show();
}

 

UserServiceImpl实现了这个接口,

package com.szy.spring.service;

import com.szy.spring.dao.UserDAO;

public class UserServiceImpl implements UserService
{
	private UserDAO userDAO;
	
	public void show()
	{
		userDAO.show();
	}

	public UserDAO getUserDAO()
	{
		return userDAO;
	}
	public void setUserDAO(UserDAO userDAO)
	{
		this.userDAO = userDAO;
	}
}

 但是在实现这个接口中,调用了UserDAO中的方法。一般情况下我们需要在这里实例化一个UserDAO对象,比如

UserDAO userDAO=new UserDAO4MySqlImpl();

 这样的话耦合度就比较高,通过spring我们可以降低耦合度。

在Sping的配置文件中,我们需要这样配置

<?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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
				http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
				http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<bean id="mySqlDAO" class="com.szy.spring.dao.UserDAO4MySqlImpl"/>
	<bean id="oracleDAO" class="com.szy.spring.dao.UserDAO4OracleImpl"/>
	<bean id="userService" class="com.szy.spring.service.UserServiceImpl">
		<!--构造方法注入  
			<property name="userDAO" ref="mySqlDAO"></property>
		-->
		<property name="userDAO" ref="oracleDAO"></property>
	</bean>
</beans>

 

下面我们测试

ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");   
		UserService service=(UserService)ctx.getBean("userService");
		service.show();

 

输入内容为

OracleDAO Implement

 如果我们想实用Mysql数据库呢? 

此时我们只要修改配置文件即可,而不需要修改Java文件。

<property name="userDAO" ref="mySqlDAO"></property>

 

  • 大小: 17.8 KB
分享到:
评论

相关推荐

    Spring学习笔记(6)----编码剖析Spring依赖注入的原理

    NULL 博文链接:https://coolszy.iteye.com/blog/512193

    Spring 学习笔记《依赖注入》源文件

    Spring 学习笔记《依赖注入》源文件。https://blog.csdn.net/jx520/article/details/86549841

    javaSpring学习笔记

    在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,包括IoC(控制反转)和DI(依赖注入)原理、AOP(面向切面编程)、Spring MVC、Spring Boot等核心内容。每个主题都结合了理论知识和实际示例,帮助你...

    Spring.NET学习笔记-控制反转

    控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理这些对象,使得...

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    Spring学习笔记

    Spring学习笔记Spring spring的配置 IOC 依赖注入 基于Xml的注入 基于注释的注入 Spring的自动注入和属性自动注入 AOP 静态代理 动态代理 使用spring实现AOP 基于Annotation实现AOP 基于XML实现AOP ...

    Spring技术内幕学习笔记.docx

    《Spring技术内幕》学习笔记1——IoC容器体系结构 ...《Spring技术内幕》学习笔记5——IoC容器的依赖注入 《Spring技术内幕》学习笔记6——IoC容器的高级特性 《Spring技术内幕》学习笔记7——AOP基础

    spring学习笔记(有代码有注解解释)

    内容概要:学习Spring的一些学习笔记,主要学习Spring 框架两大核心机制(IoC、AOP) 笔记大纲:阅读笔记可以学习了解一下内容 如何使用 IoC ;配置文件;IoC 底层原理;通过运行时类获取 bean;通过有参构造创建 ...

    Spring 学习笔记

    我的Spring 学习笔记,仅供参照 Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入

    play-java-spring:具有Spring依赖项注入的Play框架

    但是要使Play 2.4与Spring依赖注入配合使用是很难完成的,尤其是与2.3相比,在后者中只需几行代码就可以使其运行。 因此,与其让它变得更简单,不如让它变得更加困难,并从根本上强制使用Google Guice作为去污剂...

    Spring.NET学习笔记

    基础篇包括:控制反转,环境搭建,实现简易IOC框架,对象的创建,容器中对象作用域,依赖注入,依赖对象的注入,集合类型的注入等 所有代码都是基于.net平台的C#语言实现的,资源整理自互联网,欢迎爱好学习研究框架...

    spring课堂笔记.docx

    "spring课堂笔记.docx" 是一份关于 Spring 框架的课堂笔记,它提供了对 Spring 框架的深入理解和学习资源。以下是对这份课堂笔记的大致描述: "spring课堂笔记.docx" 是一份详尽的学习材料,旨在帮助开发者掌握 ...

    我的Pro Spring 学习笔记 之二 控制反转(IoC)和依赖注入(DI), Spring初步

    源代码 博文链接:https://danielkwo.iteye.com/blog/40945

    spring项目开发学习笔记

    依赖注入DI/IoC控制反转:提供松耦合的一种实现技术 AOP面向切面编程:(可以在不修改源代码的前提下,增强权限,日志,事务功能)切面编程将业务逻辑从应用服务中分离 容器(spring):管理dao,service,action,...包含并...

    Spring_IoC入门笔记.md

    依赖注入:Dependency Injection IOC的作用:降低程序间的偶合(依赖关系) 依赖关系的管理:以后都交给spring来维护 在当前类需要用到其他类的对象时,由spring为我们提供,我们只需在配置文件中说明 依赖关系...

    spring学习笔记

    spring中基本知识介绍,面向切面编程,依赖注入,控制翻转等。

Global site tag (gtag.js) - Google Analytics