Spring基础知识汇总 - 1
2017-07-26 11:06
225 查看
Spring简介
Spring框架由Rod Johnson开发,Rod Johnson’s twitter,Rod Johnson’s 百度百科,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。Spring总结起来优点如下
低侵入式设计,代码的污染极低
独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用
Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部
Spring框架的组成结构图如下所示
Spring的核心机制
管理Bean程序主要是通过Spring容器来访问容器中的Bean,ApplicationContext是Spring容器最常用的接口,该接口有如下两个实现类
ClassPathXmlApplicationContext: 从类加载路径下搜索配置文件,并根据配置文件来创建Spring容器
FileSystemXmlApplicationContext: 从文件系统的相对路径或绝对路径下去搜索配置文件,并根据配置文件来创建Spring容器
public class BeanTest{ public static void main(String args[]) throws Exception{ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); Person p = ctx.getBean("person", Person.class); p.say(); } }
Eclipse使用Spring
在Eclipse等IDE工具中,用户可以自建User Library,然后把Spring的Jar包都放入其中,当然也可以将Jar包直接放在项目的/WEB-INF/lib目录下,但是如果使用User Library,在项目发布时,需要将用户库所引用的Jar文件随应用一起发布,就是将User Library所使用的Jar复制到/WEB-INF/lib目录下,这是因为对于一个Web应用,Eclipse部署Web应用时不会将用户库的Jar文件复制到/WEB-INF/lib下,需要手动复制。
依赖注入
Spring框架的核心功能有两个
Spring容器作为超级大工厂,负责创建、管理所有的Java对象,这些Java对象被称为Bean
Spring容器管理容器中Bean之间的依赖关系,Spring使用一种被称为“依赖注入”的方式来管理Bean之间的依赖关系
使用依赖注入,不仅可以为Bean注入普通的属性值,还可以注入其他Bean的引用。依赖注入是一种优秀的解耦方式,其可以让Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。
理解依赖注入
Rod Johnson是第一个高度重视以配置文件来管理Java实例的协作关系的人,他给这种方式起了一个名字:控制反转(Inverse of Control,IoC)。后来Martine Fowler为这种方式起了另一个名称:依赖注入(Dependency Injection),因此不管是依赖注入,还是控制反转,其含义完全相同。当某个Java对象(调用者)需要调用另一个Java对象(被依赖对象)的方法时,在传统模式下通常有两种做法
原始做法: 调用者主动创建被依赖对象,然后再调用被依赖对象的方法
简单工厂模式: 调用者先找到被依赖对象的工厂,然后主动通过工厂去获取被依赖对象,最后再调用被依赖对象的方法
注意上面的主动二字,这必然会导致调用者与被依赖对象实现类的硬编码耦合,非常不利于项目升级的维护。使用Spring框架之后,调用者无需主动获取被依赖对象,调用者只要被动接受Spring容器为调用者的成员变量赋值即可,由此可见,使用Spring后,调用者获取被依赖对象的方式由原来的主动获取,变成了被动接受——所以Rod Johnson称之为控制反转。
另外从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量——相当于为调用者注入它依赖的实例,因此Martine Fowler称之为依赖注入。
相关文章推荐
- Spring基础知识汇总 Java开发必看
- Spring基础知识汇总
- Spring基础知识汇总
- Spring 的基础知识汇总
- Spring基础知识汇总 Java开发必看
- spring基础知识汇总及常见面试题目总结
- Spring基础知识汇总 Java开发必看
- spring基础知识汇总及常见面试题目总结
- spring基础知识汇总
- Spring基础知识汇总 Java开发必看
- Spring基础知识汇总
- Spring基础知识汇总——Java开发必看
- 菜鸟好文推荐(十)——Spring基础知识汇总 Java开发必看
- java开发必看|Spring基础知识汇总
- java开发必看|Spring基础知识汇总
- Spring基础知识汇总 Java开发必看
- Spring 基础知识汇总
- spring基础知识汇总及常见面试题目总结
- Spring 基础知识汇总
- Spring基础知识汇总