`

学习Spring笔记_IoC(控制反转)简介

阅读更多

学习内容:Spring2.5.6中的IoCInversion of Control)简单介绍。

 

用到Jar包(可以在附件中下载):spring.jarcommons-logging.jar

 

 

简单工作过程:spring容器读取相应beans.xml配置文件,通过配置文件中的beanproperty利用反射机制(spring容器提供方法)实例化相应类以及实例化该类中属性(类类型)。

 

IoC控制反转概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
IoC
控制反转核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean

 

 

 

用具体例子说明Spring IoC用法:

model层(VO):

User.java

package com.yusj.model;

public class User {
	private String username ;
	private String password ;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + "]";
	}
	
}

DAO层: 

 

 

IUserDAO.java

package com.yusj.dao;

import com.yusj.model.User;

public interface IUserDAO {
	public void save(User user) ;
}

UserDAOImpl.java 

 

 

package com.yusj.dao.impl;

import com.yusj.dao.IUserDAO;
import com.yusj.model.User;

public class UserDAOImpl implements IUserDAO {
	@Override
	public void save(User user) {
		System.out.println("user save success...");
		System.out.println(user.toString());
	}
}

 service层:

 

 

IUserService.java

package com.yusj.service;

import com.yusj.model.User;

public interface IUserService {
	public void add(User user) ;
}

 UserServiceImpl.java

 

package com.yusj.service.impl;

import com.yusj.dao.IUserDAO;
import com.yusj.model.User;
import com.yusj.service.IUserService;

public class UserServiceImpl implements IUserService {
	// 为此属性提供setter,getter方法.是为了让Spring容器管理
	private IUserDAO userDAO ; 

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

	@Override
	public void add(User user) {
		userDAO.save(user);
	}

}

 

spring所用到的配置文件:

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- spring2.5配置文件固定写法 -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  
  <!-- 
    1. 定义一个com.yusj.dao.impl.UserDAOImpl类型的bean.
    2. 在Spring容器中通过udi获取相应bean实例.
  -->
  <bean id="udi" class="com.yusj.dao.impl.UserDAOImpl"/>
  
  <!--
    1. 定义一个com.yusj.service.impl.UserServiceImpl类型的bean.
    2. 在Spring容器中通过usi获取相应bean实例 .
    3. 在com.yusj.service.impl.UserServiceImpl类中必须定义userDAO属性和其setter,getter方法.
    4. ref标签中bean属性必须是在配置文件中已经定义好的.       
  -->
  <bean id="usi" class="com.yusj.service.impl.UserServiceImpl">
    <property name="userDAO">
      <ref bean="udi"/>
    </property>
  </bean>
  
</beans>

 

 

 

测试结果类:

Test.java

package com.yusj.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.yusj.model.User;
import com.yusj.service.IUserService;

public class Test {

	public static void main(String[] args) {
		
		/**
		 * Spring提供的读取配置文件方法,此处推荐使用ApplicationContext而非BeanFactory.
		 * beans配置文件默认读取src根目录文件名相同的XML文件
		 * 如果需要放在特殊的位置,那么需要指定具体路径,比如:com/yusj/xml/beans.xml
		 * 
		 */
		ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
		/**
		 * 获取beans.xml中id="usi"的bean标签所对应的实体类,通过反射机制将其实例化
		 * 具体实例化过程请见beans.xml文件的详细说明
		 * 
		 */
		IUserService service = (IUserService) ctx.getBean("usi");
		// 初始化用户并赋值
		User u = new User();
		u.setUsername("张三");
		u.setPassword("zhangsan");
		// 添加用户测试
		service.add(u);
		/**
		 * 输出结果:
		 * user save success...
		 * User [username=张三, password=zhangsan]
		 */
	}
}

 

 

Eclipse导出工程见附件(Export -> General -> File System

 

分享到:
评论

相关推荐

    Spring_IOC-v(上)笔记

    Spring_IOC-v(上)笔记是关于 Spring 框架中的 IoC(控制反转)技术的笔记,主要介绍了 IoC 的概念、依赖注入、Bean 的设置、Spring 组件的管理等知识点。 IoC 技术是 Spring 框架的核心概念之一,它的主要思想...

    Spring_IOC(下)笔记

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理交给了Spring容器,使得开发者可以更专注于业务逻辑的实现,而非对象的生命周期管理。Spring_IOC(下)主要关注的是...

    学习Spring笔记_Annotation(注解)_Component

    本篇笔记主要关注Spring中的注解(Annotation)和@Component,这两大概念是Spring框架的重要组成部分,也是理解SpringIoC(控制反转)和AOP(面向切面编程)的基础。 首先,注解(Annotation)是Java提供的一种元...

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    在Java开发领域,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)框架之一。Spring的核心特性之一是使用注解来简化配置,其中`@Autowired`和`@...

    Spring自学笔记-Ioc(控制反转)容器

    ### Spring自学笔记-Ioc(控制反转)容器 #### 一、Spring框架简介 Spring框架是一个开源的Java平台,用于构建企业级应用。它提供了一种轻量级的方式来管理应用程序的各种组件和服务,使得开发者能够更容易地构建...

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

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

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

    在本文中,我们将深入探讨Spring框架的核心概念——控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)。这些概念是Spring框架的基础,对于理解和掌握Spring的使用至关重要。 首先,让...

    Spring IOC 笔记

    Spring 框架是 Java 应用开发中的核心框架,它引入了控制反转(Inversion of Control,简称 IOC)和依赖注入(Dependency Injection,简称 DI)的概念,极大地简化了组件之间的依赖关系管理。在这个笔记中,我们将...

    【狂神说】spring PDF学习总结笔记 Spring5.pdf

    Spring框架的核心思想包括两种:IOC(控制反转)和AOP(面向切面编程)。IOC使得对象的依赖关系由容器来管理和控制,而不是由对象自身负责,从而降低了耦合度。AOP则是用于处理系统中分散的、横切多个类的公共行为,...

    Spring AOP IOC源码笔记.pdf

    Spring框架是Java开发中不可或缺的一部分,它主要由两个核心组件构成:IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。本笔记将深入探讨这两个概念以及它们在Spring中...

    Spring学习笔记&源码

    Spring框架是Java开发中不可或缺的一部分,它以其IoC(控制反转)和AOP(面向切面编程)的核心特性,极大地简化了企业级应用的开发。本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程...

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

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

    spring指南学习笔记

    标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...

    java SSH框架架构学习_笔记.struts,spring,hibernate. IOC,AOP,JDBC,编写个留言管理系统网站

    本笔记主要围绕这三个框架进行深入学习,结合IOC(Inversion of Control,控制反转)、AOP(Aspect-Oriented Programming,面向切面编程)以及JDBC(Java Database Connectivity,Java数据库连接)技术,帮助读者...

    Spring框架学习笔记

    Spring的核心是IOC(Inversion of Control)容器,通过控制反转实现对象之间的解耦,使得代码更加灵活和可测试。 二、依赖注入(DI) 依赖注入是Spring的核心功能之一,它允许开发者在运行时动态地将依赖关系注入到...

    马士兵老师spring框架学习笔记

    2. **IoC(控制反转)**:Spring的核心特性之一是依赖注入(Dependency Injection,简称DI),它是控制反转的一种实现方式。DI允许我们不直接在类内部创建对象,而是通过配置文件或注解来管理对象及其依赖关系,降低...

Global site tag (gtag.js) - Google Analytics