学习内容:Spring2.5.6中的IoC(Inversion of Control)简单介绍。
用到Jar包(可以在附件中下载):spring.jar、commons-logging.jar 。
简单工作过程:spring容器读取相应beans.xml配置文件,通过配置文件中的bean和property利用反射机制(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(控制反转)技术的笔记,主要介绍了 IoC 的概念、依赖注入、Bean 的设置、Spring 组件的管理等知识点。 IoC 技术是 Spring 框架的核心概念之一,它的主要思想...
在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理交给了Spring容器,使得开发者可以更专注于业务逻辑的实现,而非对象的生命周期管理。Spring_IOC(下)主要关注的是...
本篇笔记主要关注Spring中的注解(Annotation)和@Component,这两大概念是Spring框架的重要组成部分,也是理解SpringIoC(控制反转)和AOP(面向切面编程)的基础。 首先,注解(Annotation)是Java提供的一种元...
在Java开发领域,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)框架之一。Spring的核心特性之一是使用注解来简化配置,其中`@Autowired`和`@...
### Spring自学笔记-Ioc(控制反转)容器 #### 一、Spring框架简介 Spring框架是一个开源的Java平台,用于构建企业级应用。它提供了一种轻量级的方式来管理应用程序的各种组件和服务,使得开发者能够更容易地构建...
### Spring.NET 学习笔记 — 控制反转 #### 一、控制反转(IoC)概念解析 控制反转(Inversion of Control,简称IoC)是一种软件设计思想,它改变了传统对象之间的依赖关系管理方式,从而降低了组件之间的耦合度。在...
在本文中,我们将深入探讨Spring框架的核心概念——控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)。这些概念是Spring框架的基础,对于理解和掌握Spring的使用至关重要。 首先,让...
Spring 框架是 Java 应用开发中的核心框架,它引入了控制反转(Inversion of Control,简称 IOC)和依赖注入(Dependency Injection,简称 DI)的概念,极大地简化了组件之间的依赖关系管理。在这个笔记中,我们将...
Spring框架的核心思想包括两种:IOC(控制反转)和AOP(面向切面编程)。IOC使得对象的依赖关系由容器来管理和控制,而不是由对象自身负责,从而降低了耦合度。AOP则是用于处理系统中分散的、横切多个类的公共行为,...
Spring框架是Java开发中不可或缺的一部分,它主要由两个核心组件构成:IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。本笔记将深入探讨这两个概念以及它们在Spring中...
Spring框架是Java开发中不可或缺的一部分,它以其IoC(控制反转)和AOP(面向切面编程)的核心特性,极大地简化了企业级应用的开发。本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程...
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...
本笔记主要围绕这三个框架进行深入学习,结合IOC(Inversion of Control,控制反转)、AOP(Aspect-Oriented Programming,面向切面编程)以及JDBC(Java Database Connectivity,Java数据库连接)技术,帮助读者...
Spring的核心是IOC(Inversion of Control)容器,通过控制反转实现对象之间的解耦,使得代码更加灵活和可测试。 二、依赖注入(DI) 依赖注入是Spring的核心功能之一,它允许开发者在运行时动态地将依赖关系注入到...
2. **IoC(控制反转)**:Spring的核心特性之一是依赖注入(Dependency Injection,简称DI),它是控制反转的一种实现方式。DI允许我们不直接在类内部创建对象,而是通过配置文件或注解来管理对象及其依赖关系,降低...