Spring 之 Spring容器中几个概念的个人理解
2013-06-22 11:58
246 查看
以下是个人对spring使用过程中几个常用概念的感性理解,也许和书面的定义不一样,但是个人觉得理解这样的概念,越简单越感性越让开发人员,特别是初学者理解更容易。而不至于刚接触就被那些复杂描述的概念所吓倒:
一:IOC控制反转
public class PersonServiceBean{
private PersonDao personDao = new PersonDaoBean();
public save(Person person){
personDao.save(person);
}
}
PersonDaoBean是在应用内部创建及维护。所谓控制反转就是应用本身不负责对象的创建及维护,
依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的
转移就是所谓的反转。
二:依赖注入(Dependency Injection)
当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean可以改成如下:
public class PersonServiceBean{
private PersonDao personDao;
//通过构造器参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以通
//过setter方法进行注入
public PersonServiceBean(PersonDao personDao){
this.personDao = personDao;
}
public save(Person person){
personDao.save(person);
}
}
所谓依赖注入就是指:在运行期,由外部容器动态的将依赖对象注入到组件中。
三:为什么要使用spring
1:降低软件之间的耦合度,实现软件各层之间的解耦;
Controller -> Service -> DAO
2:可以使用spring容器提供的各项服务;(如:事务管理、JMS服务、Spring Code 核心服务、持久化服务、其他)
3:容器提供单例模式的支持,开发人员不需要自己编写实现单例代码;
4:容器提供AOP技术,利用它很容易实现如权限拦截、运行期监控等功能;
5:容器提供很多辅助类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate等
6:spring对主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样便于应用的开发
四:关于经常说到的一些概念
1:轻量级和重量级的概念划分
轻量级和重量级的划分,主要看它使用了多少服务。使用的服务越多,容器为普通java对象做的工作也
越多,必然会影响到应用的发布时间或者是运行性能。
对于spring容器,它提供了很多服务,但是这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明
应用该服务,如果应用服务很少,如:只使用了spring核心服务,我们就可以认为此时应用属于轻量级应用,反之就
属于重量级。目前EJB容器因为它默认为应用提供了EJB规范的所有服务,所以它属于重量级的。
五:依赖注入方式
1、使用构造器注入
2、使用属性setter方法注入
3、使用filed注入(用于注解方式)
一:IOC控制反转
public class PersonServiceBean{
private PersonDao personDao = new PersonDaoBean();
public save(Person person){
personDao.save(person);
}
}
PersonDaoBean是在应用内部创建及维护。所谓控制反转就是应用本身不负责对象的创建及维护,
依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的
转移就是所谓的反转。
二:依赖注入(Dependency Injection)
当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean可以改成如下:
public class PersonServiceBean{
private PersonDao personDao;
//通过构造器参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以通
//过setter方法进行注入
public PersonServiceBean(PersonDao personDao){
this.personDao = personDao;
}
public save(Person person){
personDao.save(person);
}
}
所谓依赖注入就是指:在运行期,由外部容器动态的将依赖对象注入到组件中。
三:为什么要使用spring
1:降低软件之间的耦合度,实现软件各层之间的解耦;
Controller -> Service -> DAO
2:可以使用spring容器提供的各项服务;(如:事务管理、JMS服务、Spring Code 核心服务、持久化服务、其他)
3:容器提供单例模式的支持,开发人员不需要自己编写实现单例代码;
4:容器提供AOP技术,利用它很容易实现如权限拦截、运行期监控等功能;
5:容器提供很多辅助类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate等
6:spring对主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样便于应用的开发
四:关于经常说到的一些概念
1:轻量级和重量级的概念划分
轻量级和重量级的划分,主要看它使用了多少服务。使用的服务越多,容器为普通java对象做的工作也
越多,必然会影响到应用的发布时间或者是运行性能。
对于spring容器,它提供了很多服务,但是这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明
应用该服务,如果应用服务很少,如:只使用了spring核心服务,我们就可以认为此时应用属于轻量级应用,反之就
属于重量级。目前EJB容器因为它默认为应用提供了EJB规范的所有服务,所以它属于重量级的。
五:依赖注入方式
1、使用构造器注入
2、使用属性setter方法注入
3、使用filed注入(用于注解方式)
相关文章推荐
- 个人对于spring依赖注入和控制反转概念的理解
- Spring核心概念理解-IoC容器、DI、AOP
- 个人对SCA标准中Component,Composite等几个关键概念的理解
- spring 常用的几个注解的个人理解
- spring 常用的几个注解的个人理解
- Spring之IOC、核心容器和Bean概念详解
- 理解Java Spring核心功能之一:控制反转容器(IOC Container)
- 基于指令的移植方式的几个重要概念的理解(OpenHMPP, OpenACC)-转载
- 对Spring的一些个人理解
- 关于Spring父子容器的理解
- Spring AOP详解 (转) 以及IOC(个人理解)
- 理解百度云推送的几个概念
- spring面试题 对DI , AOP概念的理解
- JaveScript中的几个关键概念的理解-原型链的构建
- 对敏捷开发中常用的几个"敏捷概念"的理解
- java入门概念个人理解之package与import浅析
- 【个人笔记重点,不作为参考】主题:docker的容器、仓库、镜像三个主要概念
- 《STL源码剖析》---list容器transfer操作个人理解
- Spring学习笔记:1、概念理解
- 关于KCF的几个问题个人理解