04-spring-控制反转
使用myeclipse开发spring一个Demo。
第一步:新建一个web project。

第二步:安装spring开发的支持包。

安装后多了这几个东西

3,定义一个操作接口:
package com.Spring.Demo;
public interface IFruit {
public void eat();
}
4,定义接口操作子类。
package com.Spring.Demo;
public class Apple implements IFruit {
@Override
public void eat() {
System.out.println("吃苹果");
}
}
随后不提供有工厂的操作类,因为spring本身就有工厂类。在之后的工作就不应该出现工厂类。
5,修改applicationContext.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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> <bean id="apple" class="com.Spring.Demo.Apple"></bean> </beans>
6,随后通过特定模式启动spring容器。
找到子类操作接口。
package com.Spring.Demo; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestApple { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
IFruit fruit=ctx.getBean("apple",Apple.class);
fruit.eat();
}
}
整个代码操作过程中无法发现工厂设计模式的明确使用,因为所有的工厂都由spring帮助用户处理了。而且在
applicationContext.XML配置文件里,都在spring容器启动时候默认实例化好了所有的对象。
使用的时候,根据ID名称取出即可。
使用过程中的类:
1,应用上下文类:ApplicationContext
所有配置的信息都需要通过此类读取。
常用方法:getBean(String name,Class<T> requireType)。取得指定名称的bean对象,并且设置泛型为指定操作的bean类型,避免向下转型;
2,由于资源控制文件可能在任意位置上,例如CLASSPATH或者磁盘中,那么必须使用相关子类:
ClassPathXmlApplicationContext("ClassPath");表示在CLASSPATH中读取资源文件。
所有spring配置的<bean>元素都表示在spring容器启动的时候自动初始化,所以在使用对象之前已经准备好了供用户使用的实例,
用户在使用的时候,只需要通过bean的ID,获取对象实例,赋值给对象声明。
如果有更严格的配置也可以把接口配置上去(不过没啥用)
<bean id="fruit" class="com.Spring.Demo.IFruit" abstract="true"></bean>
<bean id="apple" class="com.Spring.Demo.Apple" parent="fruit"></bean>
由于接口是抽象的,那么表示接口对象不会进行实例化。而在编写apple元素的时候加上的parent 也只是说明而已。
总结
spring是一个非常庞大的工厂,所有对象的实例化等赋值部分,不需要用户赋值处理了,全部交给spring完成。
用户只需要根据需求引用对象实例即可。
04-spring-控制反转的更多相关文章
- Spring 控制反转
Spring 控制反转 具体内容 Spring 开发框架之中有几个概念DI&IOC.AOP.那么要想理解Spring就必须首先理解控制反转的核心意义是什么? 对于IOC来讲如果直接进行文字的描 ...
- Spring 控制反转容器(Inversion of Control – IOC)
系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Contro ...
- Spring 04: IOC控制反转 + DI依赖注入
Spring中的IOC 一种思想,两种实现方式 IOC (Inversion of Control):控制反转,是一种概念和思想,指由Spring容器完成对象创建和依赖注入 核心业务:(a)对象的创建 ...
- 尚学堂Spring视频教程(二):Spring控制反转
用Spring来实现IOC 在上节中我们自定义了一个接口BeanFactory和类ClassPathXmlApplicationContext来模拟Spring,其实它们在Spring中确实是存在的, ...
- Spring控制反转(IOC)和依赖注入(DI),再记不住就去出家!
每次看完spring的东西感觉都理解了,但是过了一段时间就忘,可能是不常用吧,也是没理解好,这次记下来. 拿ssh框架中的action,service,dao这三层举例: 控制反转:完成一个更新用户信 ...
- Spring控制反转(依赖注入)的最简单说明
1.常规方式实现实例化 1.1已有角色如下: 一个接口Interface,两个接口实现类InstatnceA.InstanceB,一个调用类User 1.2当前实例化InstanceA如下: Inte ...
- spring 控制反转与依赖注入原理-学习笔记
在Spring中有两个非常重要的概念,控制反转和依赖注入:控制反转将依赖对象的创建和管理交由Spring容器,而依赖注入则是在控制反转的基础上将Spring容器管理的依赖对象注入到应用之中: 所谓依赖 ...
- 对spring控制反转以及依赖注入的理解
一.说到依赖注入(控制反转),先要理解什么是依赖. Spring 把相互协作的关系称为依赖关系.假如 A组件调用了 B组件的方法,我们可称A组件依赖于 B组件. 二.什么是依赖注入. 在传统的程序设计 ...
- Spring 控制反转和依赖注入
控制反转的类型 控制反转(IOC)旨在提供一种更简单的机制,来设置组件的依赖项,并在整个生命周期管理这些依赖项.通常,控制反转可以分成两种子类型:依赖注入(DI)和依赖查找(DL),这些子类型各自又可 ...
- Spring控制反转与依赖注入(IOC、DI)
IOC: 反转控制 Inverse Of Control DI:依赖注入 Dependency Injection 目的:完成程序的解耦合 解释:在应用系统的开发过程中,有spring负责对象的创 ...
随机推荐
- [拒绝毒瘤的小清新系列] give you a tree
题面在这里! (小声)这其实是我读错某题之后自己出的一道题...... 正解也很简单啦,直接扫描线+线段树水过(考虑一个合法的区间正好有 siz-1 对树上相邻的点对)23333 #include&l ...
- 【循环节】【矩阵乘法】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem F. Fibonacci of Fibonacci
题意:F(n)为斐波那契数列的第n项,问你F(F(n)) mod 20160519的值. 发现有循环节,F(26880696)=0,F(26880697)=1,.... 于是两次矩乘快速幂即可. #i ...
- 【构造】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) B. High Load
让你构造一棵树(给定了总结点数和总的叶子数),使得直径最小. 就先弄个菊花图(周围一圈叶子,中间一个点),然后平均地往那一圈放其他的点即可. #include<cstdio> using ...
- 20172333 2017-2018-2 《Java程序设计》第8周学习总结
20172333 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容 多态性应用可以随时间变化指向不同类型的对象. 多态性应用,方法的引用与方法的定义代码的绑定在运行 ...
- 【bugku】【ZSCTF】【迷宫RE】Take The Maze WriteUp
Take The Maze 首先拿进PEID里查一下有没有壳: 无壳,果断拖进IDA.可是Graph View中找不到主程序的位置,在函数表里寻找主函数: 函数太多阻扰了我们找到主程序,运行一下程序找 ...
- Unity中Invoke 和 InvokeRepeating的区别
Invoke() 方法是 Unity3D 的一种委托机制 如: Invoke("Test", 5); 它的意思是:5 秒之后调用 Test() 方法: 使用 Invoke() ...
- SpringBoot使用Gradle构建war包
Spring Boot默认将应用打包成可执行的jar包.有时候需要打包成war包部署在tomcat等容器.下面简单介绍下打包的步骤. 一.修改gradle.build文件 1.1 添加如下配置 app ...
- Trie 图
时间限制:20000ms 单点时限:1000ms 内存限制:512MB 描述 前情回顾 上回说到,小Hi和小Ho接受到了河蟹先生伟大而光荣的任务:河蟹先生将要给与他们一篇从互联网上收集来的文章,和一本 ...
- GridControl事件
private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventA ...
- html模板与json数据交互
阅读这篇文章后,对html和json有很大的启发: http://www.zhangxinxu.com/wordpress/2012/09/javascript-html-json-template/ ...