`
GLC
  • 浏览: 112754 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Spring IOC

 
阅读更多
 IOC 目的:降低类与类之间的依赖性、便于程序的可扩展性。
   方法:程序依赖于接口,调用是主动的将实现类传递过来。
在了解IOC之前、我们先说下传统的编程方法:

在传统的编程中,我们是通过在Action类中实例化DAO类对象、然后再调用DAO类中的方法;这样来实现对DAO层中的数据操作;但是、问题来了,当我们以后对这个程序升级时用这个Action类对另一个DAO类进行操作时、一般我们就需要重新实例化对象,然后再修改所调用的相应的方法;这样不仅降低了代码的质量、增加了代码冗余;而且对于解决升级所带来的问题也是不可能的。所以、我们在写程序时,所要思考的就是避免这种问题,让我们前期设计时、为后期的程序升级提供便利;然而,对于传统的这种编程思想来说想做到是不可能的;但是、如果我们让Action类依赖于接口的话、只需要在接口中定义抽象方法,然后让相应的类实现接口的具体方法,然而这里最关键的一步就是我们在Action中如何调用其方法;这也是IOC的重要一点、它的调用是通过接口实现类实例化好后放入Action的setter()方法中来接收所要调用的类中的方法;这样由对DAO类的依赖转变成对接口的依赖、让要实现的类实例化好后传给Action;于是便有传统的Action控制DAO中方法转变成DAO自己控制;这样就大大降低了类与类之间的依赖。这就是控制反转。这也就是Spring IOC的编程核心。

  Spring中的具体实现:在spring的配置文件中、我们先将要调用的类放进来;
  比如:这是将jdbc实现类和hibernate实现类都放在配置文件中、它们都是对数据库的操作、定义的id是唯一的、对应的class类是其绝对路径


  <bean id="jdbcDAO" class="hn.spring.why.dao.TestJdbcDAO"/>
  	
  <bean id="hibernateDAO" class="hn.spring.why.dao.TestHibernateDAO"/>

然后、我们再配置的就是Action调用哪种DAO类了;下面的ref便是要调用的id名
<bean id="testAction" class="hn.spring.why.TestAction">
		<!-- 维护当前action类依赖的DAO实现类 -->
		<property name="baseDAO" ref="jdbcDAO"/>
</bean>


以上这些配置使得在spring中将其配置的类都已经实例化好了、而且哪个ADO放入Action的setter方法中也已放好了、具体实现时只需要在需要调用的地方中解析spring的配置文件
如:

ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
然后在获取和调用
TestAction action = (TestAction)ioc.getBean("testAction");




这就是Spring IOC
最后补充一点、我们上面的setter()方法就是平常所说的依赖注入、除了setter方法外,我们还可以用构造方法将已实例化对象传到action中去。
在Spring中需要配置<constructor-arg ref=”jdbcDAO”/> 同时、在添加一个有参的构造函数;
最后、我们通过对spring IOC 的回顾可以发现、里面用到了单实例模式以及工厂模式;单实例模式就是我们的action每次被注入的都是同一个对象;但是、spring也为我们提供了多实例的方法,在bean中添加scope=”prototype”;这样它就由默认的scope=”singleton”变成了多实例模式了。而工厂模式就是Spring配置一个bean类,spring容器就会将他们实例化好、这就是一种抽象的工厂模式。
分享到:
评论

相关推荐

    springIoc实现原理

    **Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...

    spring Ioc容器配置

    spring Ioc容器配置 IOC容器数据源配置 &lt;!-- 配置数据源 --&gt; destroy-method="close"&gt; &lt;value&gt;org.gjt.mm.mysql.Driver &lt;value&gt;jdbc:mysql://localhost:3306/demo &lt;value&gt;root ...

    spring ioc和aop原理流程图(详细)

    Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这两个概念是Spring框架的核心特性,极大地简化了企业...

    实验一 Springioc基本操作.docx

    SpringIOC是Spring Framework中的核心组件之一,负责管理应用程序中的对象、依赖关系和生命周期。 在 Spring IOC 中,对象的创建和管理是通过 BeanFactory 或 ApplicationContext 实现的。BeanFactory 是 Spring ...

    spring ioc

    标题 "Spring IOC" 描述了我们讨论的核心主题——Spring 框架中的依赖注入(Inversion of Control,简称 IOC)机制。Spring 是一个广泛应用的 Java 应用开发框架,其核心特性之一就是IOC,它极大地简化了软件组件...

    Spring IoC加载流程讲解

    Spring IoC 加载流程讲解 在本节中,我们将对 Spring IoC 加载流程进行详细的讲解,并探讨 IoC 思想和依赖倒置原则的应用。 IoC 控制反转 IoC(Inversion of Control)是指在软件设计中,将对象实例的控制权从...

Global site tag (gtag.js) - Google Analytics