IOC理解
使用IOC对象的依赖都是在对象创建是由负责协调系统中各个对象的外部实体提供的。
减少耦合的一个通常做法是具体实现隐藏在接口下,使得具体实现类的替换不会影响到引用类。
IOC也被称之为DI,是Spring的两大核心概念之一。
A. 依赖注入的概念
Spring的两大核心概念:一个是控制反转(IOC), 也叫做依赖注入(DI);还有一个是面向切面编程(AOP),IOC和DI虽然不是Spring的首创,但是他没在这两方面都非常优秀,可以说整个Spring框架都是围绕着其IOC实现和Aop实现架设起来的。
控制反转模式的基本概念:当某个java对象需要依赖另一个java对象时,不是自身直接创建依赖对象而是由实现IOC容器来创建,并将它注入到需要这个依赖对象的java对象中
B. Spring的依赖注入
Spring框架带有一个IOC容器它使用的注入方式有构造器注入和setter注入。
a) 构造器注入:通过构造器方法来传入所依赖的对象,从而完成依赖关系的设定
b) Setter注入:通过set方法来传入所依赖的对象,从而完成依赖关系的设定
c) 案例:
Service
package cn.csdn.service;
public interface GreetingService {
void say();
}
ServiceImpl
package cn.csdn.service;
public class GreetingServiceImpl implements GreetingService{
private String say;
private String name;
public GreetingServiceImpl(String say, String name) {
this.say = say;
this.name = name;
}
@Override
public void say() {
System.out.println(name+":say"+say);
}
public void setSay(String say) {
this.say = say;
}
public void setName(String name) {
this.name = name;
}
}
Junit
package cn.csdn.junit;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import cn.csdn.service.GreetingService;
import cn.csdn.service.GreetingServiceImpl;
public class GreetingTest {
@Test
public void test(){
ApplicationContext ac=new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
GreetingServiceImpl gsi=(GreetingServiceImpl)ac.getBean("greetingServiceImpl");
gsi.say();
}
@Test
public void test1(){
ApplicationContext ac=new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
GreetingService gsi=(GreetingService)ac.getBean("greetingServiceImpl");
gsi.say();
}
@Test
public void test2(){
ApplicationContext ac=new FileSystemXmlApplicationContext(new String[]{"src/applicationContext.xml"});
GreetingService gsi=(GreetingService)ac.getBean("greetingServiceImpl");
gsi.say();
}
@Test
public void test3()throws Exception{
Resource resource=new FileSystemResource("src/applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
GreetingService greetingService=(GreetingService)factory.getBean("greetingServiceImpl");
greetingService.say();
}
}
Xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
">
<!-- set -->
<!--
<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">
<property name="say" value="你好!"></property>
<property name="name" value="Spring"></property>
</bean>
-->
<!-- 构造器 -->
<!--
<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">
<constructor-arg index="0">
<value>你好!</value>
</constructor-arg>
<constructor-arg index="1">
<value>Spring</value>
</constructor-arg>
</bean>
-->
<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">
<constructor-arg type="java.lang.String">
<value>你好!</value>
</constructor-arg>
<constructor-arg type="java.lang.String">
<value>Spring</value>
</constructor-arg>
</bean>
</beans>
分享到:
相关推荐
.Net8 IOC容器基本形态 1、创建对象 2、存储对象 字典随机取对象,随机存对象性能高 3、获取对象 4、依赖注入(对象属性赋值) 5、对象过滤(特征)
Spring对IOC的理解 Spring框架中的IOC(Inversion of Control,控制反转)是一种软件设计模式,它将传统的编程方式中对象的创建和管理权力从应用程序中移除,并交给了IOC容器来统一管理。这种设计模式可以减少程序...
4. **可管理性**:通过集中式的配置文件,可以统一管理和控制所有对象的生命周期,使得系统更加易于理解和维护。 5. **面向接口编程**:IoC鼓励面向接口编程,而不是面向具体实现。这符合依赖倒转原则(Dependency ...
谈谈Spring IOC得理解,原理与实现.md
但理解如何手动实现这个过程可以帮助我们更好地理解IoC的核心原理,从而更有效地利用现有的IoC框架。 总的来说,这个“自己实现ioc实例demo”旨在帮助开发者理解依赖注入的基本概念,并通过XPath解析XML文件实践这...
初学者可能不理解什么叫控制反转,那么我们来进一步描述一下Ioc。 Ioc是一种通过描述来生成或获取对象的技术,这里的对象当然是指java对象。 在Java中我们更多的是通过new关键字来创建对象,在Spring中,则是通过...
**Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中...在实际开发中,理解并熟练运用Spring Ioc,对于提升开发效率和质量具有重要作用。
《深入解析:easy-ioc——一个简单的IOC容器实现》 在软件开发中,控制反转(Inversion of Control,简称IOC)是一种设计模式,它将对象...对于Java开发者来说,研究“easy-ioc”源码是一个加深对IOC理解的绝佳途径。
在Java Web开发中,IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)是两个至关重要的概念,它们极大地提升了代码的灵活性和可维护性。Spring框架是实现这两种设计模式的...
"IOC(DI)与AOP概念的理解" IOC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)是软件设计中两个重要的概念。控制反转的意思是依赖关系的获取方式被反转了。所谓依赖,从程序的角度看,...
2. **DMC2210控制器的硬件细节**:深入理解DMC2210的硬件结构,包括电路设计、接口类型、电源需求、物理尺寸等。 3. **两者之间的配合工作**:探究IOC0640与DMC2210如何协同工作,实现控制系统的整体优化。 4. **...
这个“IOC练习事例”旨在帮助我们深入理解IOC和DI的概念,通过实现`MyselfIoc`容器,我们可以学习如何管理和解决对象的依赖关系,提高代码的灵活性和可测试性。通过接口编程和依赖注入,我们可以编写出更符合SOLID...
我们从一个简单的容器开始,一步步的重构,最后实现一个基本的Spring框架的雏形,为了帮助我们更加深入的理解Spring的IoC的原理和源码。 详细内容见博文: 【SSH进阶之路】一步步重构容器实现Spring的IoC——从一个...
在软件开发过程中,图标是应用程序不可或缺的一部分,它不仅代表了应用的视觉形象,还为用户提供了一种快速识别和理解应用功能的方式。"图片转IOC图标工具"正是一款专为开发者设计的实用工具,旨在帮助他们将普通的...
总的来说,学习"JavaEE Spring IoC入门"意味着你需要理解Spring如何通过IoC管理对象,掌握XML配置文件的编写,以及如何在Web环境中使用Spring MVC进行开发。此外,还需要了解如何编写测试用例来验证Spring配置的有效...
首先,理解 IOC 的概念至关重要。IOC 是一种设计模式,它将对象的创建和管理权反转,由框架负责管理对象的生命周期,而不是由对象自身管理。这样,开发者可以更专注于业务逻辑,而无需关心对象的实例化、配置和组装...
Spring 框架是Java开发中的一个重要组成部分,它以其强大的功能和灵活性被广泛应用于企业级应用。Spring的核心特性包括AOP(面向切...对于初学者来说,理解这些概念并熟练运用,能够显著提升编写高质量Java应用的能力。
通过这个例子,我们可以理解IOC的工作流程,并将其应用到更复杂的应用场景中。 总结起来,IOC是现代软件开发中的重要设计原则,通过反转对象的创建和管理,使得代码更加灵活和可维护。掌握IOC的原理和实践,对于...