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 数组。

 

相关文章
|
3月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
9天前
|
XML 缓存 Java
搞透 IOC、Spring IOC ,看这篇就够了!
本文详细解析了Spring框架的核心内容——IOC(控制反转)及其依赖注入(DI)的实现原理,帮助读者理解如何通过IOC实现组件解耦,提高程序的灵活性和可维护性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
2月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
193 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
2月前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
1月前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
117 9
|
1月前
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
25 0
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
2月前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
38 4
|
21天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
49 0
|
2月前
|
XML Java 开发者
经典面试---spring IOC容器的核心实现原理
作为一名拥有十年研发经验的工程师,对Spring框架尤其是其IOC(Inversion of Control,控制反转)容器的核心实现原理有着深入的理解。
105 3
|
29天前
|
XML Java 数据格式
Spring的IOC和AOP
Spring的IOC和AOP
43 0