Spring-IOC

简介: Spring-IOC(Inversion of Control ,控制反转或依赖注入) 1 理解Spring IOC IOC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。

Spring-IOC(Inversion of Control ,控制反转或依赖注入)

1 理解Spring IOC

IOC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IOC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

其实IOC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IOC思想中,应用程序就变成被动的了,被动的等待IOC容器来创建并注入它所需要的资源了。

2 依赖注入通常有如下两种方式:

设值注入:IOC容器使用属性的Setter方法来注入被依赖的实例。

package com.cy.service.impl;

import com.cy.bean.UserInfo;
import com.cy.dao.IUserDao;
import com.cy.service.IUserService;

public class UserServiceImpl implements IUserService{
   private IUserDao dao;
  
  public void setUserDao(IUserDao dao){
       this.dao=dao;
   }
    @Override
    public void addUser(UserInfo user) {
        dao.addUser(user);
        
    }

}

 

在ApplicationContext.xml中设置

1 <bean id="userServiceImpl" class="com.cy.service.impl.UserServiceImpl">
2        <property name="userDao" ref="userDaoImpl"></property>
3      </bean>
4      <bean id="userDaoImpl" class="com.cy.dao.impl.UserDaoImpl"></bean>    

 

在配置文件中,Spring配置Bean实例通常会指定2个属性:

Id:指定该Bean的唯一标识,程序通过ID属性值来访问该BEAN实例。

Class:指定该BEAN的实现类,此处不可再用接口(接口是不能实例化的),必须使用实现类,Spring容器会使用XML解析器读取该属性值,并利用反射来创建该实现类的实例。

构造注入:IOC容器使用构造器来注入被依赖的实例。这种方式在构造实例时,已经为其完成了依赖关系的初始化。

3 spring容器:  

  Bean工厂(BeanFactory)、应用上下文(ApplicationContext)。
   
Bean工厂和应用上下文的区别。
   应用上下文是Bean工厂的子接口,功能更为强大,扩展了企业级服务:电子邮件服务,JNDI服务。
   Bean工厂是延迟加载,应用上下文是立即加载。
   spring容器中取出的实体对象默认是单例模式。 

应用上下文的实现类作用。
ClassPathXmlApplicationContext  从src目录下查询。
FileSystemXmlApplicationContext 从工程下查询
XmlWebApplicationContext  从web项目的webroot下查询

4、bean装配的方式,value和ref的含义。

 value是直接赋值,ref引用已经注册的bean。
 bean默认是单例模式。利用scope="prototype"提供多实例。
 bean的装配支持List、Set、Map、Properties 数组。

 

相关文章
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
1103 26
|
11月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
XML 人工智能 Java
Spring IOC 到底是什么?
IOC(控制反转)是一种设计思想,主要用于解耦代码,简化依赖管理。其核心是将对象的创建和管理交给容器处理,而非由程序直接硬编码实现。通过IOC,开发者无需手动new对象,而是由框架负责实例化、装配和管理依赖对象。常见应用如Spring框架中的BeanFactory和ApplicationContext,它们实现了依赖注入和动态管理功能,提升了代码的灵活性与可维护性。
330 1
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
444 18
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
413 69
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
|
Java 容器 Spring
什么是Spring IOC 和DI ?
IOC : 控制翻转 , 它把传统上由程序代码直接操控的对象的调用权交给容 器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转 移,从程序代码本身转移到了外部容器。 DI : 依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中。
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
356 21
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
677 12