`
coolszy
  • 浏览: 1412423 次
  • 性别: 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依赖注入的原理

    本篇学习笔记将深入剖析Spring依赖注入的原理,通过源码分析帮助我们理解这一核心机制。 首先,依赖注入允许我们解耦组件之间的关系,使得各个组件可以独立地进行开发、测试和维护。在Spring中,DI主要通过两种方式...

    Spring.NET学习笔记-实现一个简易的IoC框架

    ### Spring.NET学习笔记-实现一个简易的IoC框架 #### 一、背景介绍与理论基础 在.NET领域中,Spring.NET框架是一个非常重要的轻量级框架,它支持依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    Spring学习笔记(8)----属性注入的方式

    本篇学习笔记主要探讨了Spring中的属性注入方式,包括了传统的XML配置注入、注解式注入以及使用Java配置类的方式。 一、XML配置注入 在Spring早期版本中,XML配置文件是定义Bean及其依赖关系的主要方式。属性注入...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    Spring学习笔记-cqupt

    在本篇 Spring 学习笔记中,我们将探讨 Spring 的入门、优点、组成以及重要的IOC理论。 1. **Spring 简介** Spring 是一个开源的、免费的 Java 框架,它的目标是减少企业级开发的复杂性。它集成了许多现有的技术,...

    Spring2.5.6学习笔记-最新

    Spring 框架提供了一个全面的编程模型,并且支持多种开发模式,包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect Oriented Programming, AOP)、数据访问/集成等。Spring 2.5.6 版本作为早期的一个...

    Spring.NET学习笔记 - 刘冬.NET - 博客园

    这个压缩包包含了一系列刘冬.NET在博客园上发布的Spring.NET学习笔记,帮助读者深入理解这个强大的框架。 1. **控制反转(IoC)**: 控制反转是Spring.NET的核心概念之一,它将对象的创建和管理权交给了框架,而...

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

    ### Spring.NET 学习笔记 — 控制反转 #### 一、控制反转(IoC)概念解析 控制反转(Inversion of Control,简称IoC)是一种软件设计思想,它改变了传统对象之间的依赖关系管理方式,从而降低了组件之间的耦合度。在...

    JSF2整合Spring3------JSF学习笔记4

    **JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...

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

    在Spring框架中,依赖注入主要通过两种方式实现:构造器注入和setter注入。 1. 构造器注入:通过在类的构造函数中传递依赖对象来完成。这种方式强制了所有依赖在对象实例化时就已明确,有利于确保对象的完整性和...

    spring学习笔记

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...

    Spring学习笔记.zip

    Spring框架以其轻量级、依赖注入(DI)和面向切面编程(AOP)等特性而闻名,是Java EE开发中的主流选择。 **依赖注入(Dependency Injection,DI)** 依赖注入是Spring框架的核心特性之一,它允许开发者在运行时将...

    spring-framework-2.5-rc2-with-dependencies\spring-framework-2.5-rc2\spring-framework-2.5-rc2docs

    2.5版本引入了一些重要的增强,如依赖注入(Dependency Injection,DI)的改进,使得组件之间的依赖关系更加明确,降低了代码间的耦合度。DI通过容器管理对象的生命周期,允许开发者在不修改代码的情况下更换或升级...

    spring-boot学习笔记

    ### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    Spring学习笔记(15)----使用Spring的注解方式实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...

    Spring学习笔记.doc

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...

    Spring框架学习笔记

    Spring框架是Java开发中广泛应用的轻量级框架,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)为核心特性,极大地简化了企业级应用的开发工作。这份"Spring框架...

Global site tag (gtag.js) - Google Analytics