攻城狮在路上(贰) Spring(二)--- Spring IoC概念介绍
一、IoC的概念:
  IoC(控制反转)是Spring容器的核心。另一种解释是DI(依赖注入),即让调用类对某一个接口的依赖关系由第三方注入,以移除调用类对某一个接口实现类的一览。
  定义如此,由此可见,在面向接口编程的情况下,IoC可以很好的实现解耦,可以以配置的方式为程序提供所需要的接口实现类。
  在实际程序开发中,我们只需要提供对应的接口及实现类,然后通过Spring的配置文件或者注解完成对依赖类的装配。
二、IoC的类型:
  1、通过构造函数:
    此种方式的缺点是,在构造函数中注入之后一般会作为一个私有变量存储在调用类内,而调用类不见得每一个方法都需要该注入类。
  2、属性注入:
    这是最为常见的方法,通过Setter方法实现。
  3、接口注入:
    将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供相应的注入方法。缺点是增加了一个接口。不提倡使用这种方式。
三、通过容器完成依赖关系注入:
  Spring通过配置文件或注解描述类和类之间的依赖关系。下面是一个入门的Demo实例:
<?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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd>
<bean id="car" class="com.xxx.Car"/>
<bean id="boss" class="com.xxx.Boss">
<property name="car">
<ref bean="car"></ref>
</property>
</bean>
</beans>
然后通过new XmlBeanFactory("beans.xml");等方式即可启动容器,在启动容器时,Spring会根据配置文件的描述信息,自动实例化Bean并且完成依赖关系的装配。
攻城狮在路上(贰) Spring(二)--- Spring IoC概念介绍的更多相关文章
- 攻城狮在路上(贰) Spring(四)--- Spring BeanFactory简介
		
BeanFactory时Spring框架最核心的接口,它提供了高级IoC的配置机制,使管理不同类型的Java对象成为了可能.我们一般称BeanFactory为IoC容器.BeanFactory是Spr ...
 - 攻城狮在路上(贰) Spring(三)--- Spring 资源访问利器Resource接口
		
Spring为了更好的满足各种底层资源的访问需求.设计了一个Resource接口,提供了更强的访问底层资源的能力.Spring框架使用Resource装载各种资源,包括配置文件资源.国际化属性文件资源 ...
 - 攻城狮在路上(贰) Spring(一)--- 软件环境、参考书目等一览表
		
一.软件环境: 二.参考书目: <Spring 3.X 企业应用开发实战> 陈雄华.林开雄著 电子工业出版社出版 三.其他说明: spring 源码地址:https://github.co ...
 - 攻城狮在路上(肆)How tomcat works(二) 一个简单的servlet容器
		
该节在上一节的基础上增加了所谓对静态资源和动态资源访问的不同控制流程.示例里面采用的是对路径“/servlet/”进行了特殊处理. 一. 主要还是从HttpServer1中的main方法开始,先解析出 ...
 - 攻城狮在路上(叁)Linux(二十九)--- 完整备份工具:dump以及restore
		
一.dump命令: 该命令既可以针对整个文件系统进行备份,也可以仅针对目录来备份.还可以指定不同的备份等级(-0~-9共10个等级). dump -W:列出在/etc/fstab中具有dump设置的分 ...
 - 攻城狮在路上(叁)Linux(二十八)--- 打包命令:tar
		
首先介绍一下tar打包命令的基本格式,下面的三种之间不能混淆. tar [-j|-z] [cv] [-f 新文件名] file1 file2 ...; tar [-j|-z] [tv] [-f 新文件 ...
 - 攻城狮在路上(叁)Linux(二十七)--- 压缩与打包之常见的压缩命令
		
前面讲到,linux中的后缀名没有特殊的意义,一般是作为不同文件类型的标识而已.下面是与打包.压缩相关的后缀名介绍: *.z:compress程序压缩文件 *.gz:gzip程序压缩文件 *.bz2: ...
 - 攻城狮在路上(叁)Linux(二十六)--- linux文件系统的特殊查看与操作
		
一.boot sector 与 super block的关系: 1.boot sector用于存放引导装载程序,占用1024个字节. 2.super block的大小也为1024字节. 3.若bloc ...
 - 攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建
		
swap的功能是应付物理内存不足的状况,用硬盘来暂时放置内存中的信息. 对于一般主机,物理内存都差不多够用,所以也就不会用到swap,但是对于服务器而言,当遇到大量网络请求时或许就会用到. 当swap ...
 
随机推荐
- Python自动化之socketserver模块
			
1 动态导入模块 import importlib aa = importlib.import_module("lib1.aa") //lib跟当前模块不是一个目录,aa是lib下 ...
 - python中单元测试/数据库预处理的技巧
			
假设文件结构: pkg/ __init__.py components/ core.py __init__.py tests/ core_test.py __init__.py python -m 你 ...
 - wav转aac
			
//调用neroAacEnc.exe STARTUPINFO si={}; PROCESS_INFORMATION pi={};//隐藏窗口 si.cb=sizeof(si); si.dwFlags= ...
 - 单独使用CKfinder上传图片
			
首先引入ckfinder.js <script type="text/javascript" src="<%=request.getContextPath() ...
 - 用ConfigParser模块读写配置文件——Python
			
对于功能较多.考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置? 1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑 ...
 - xargs命令
			
xargs命令 常用工具命令 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具.它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令 ...
 - PHP 知识点链接
			
PHP 1.PHP中的危险函数全解析 http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0216/333 ...
 - How to mount a NFS share?
			
Assume you have a NFS share /data/shares/music, at server: 192.168.1.5 You can mount the NFS share f ...
 - poj 1789
			
http://poj.org/problem?id=1789 这是一道图论的题,个人觉得和那个POJ1258是差不多的,就是多了一步,题目难以读懂 题目的意思:就是给你一群字符串要你找字符串对应的字符 ...
 - 使用mysqladmin ext了解MySQL运行状态【转】
			
摘要: mysqladmin是 MySQL一个重要的客户端,最常见的是使用它来关闭数据库,除此,该命令还可以了解MySQL运行状态.进程信息.进程杀死等.本文介绍一下如何使用 mysqladmin e ...