1.什么是spring?

spring是一个开放源码的J2EE容器框架,是针对bean的生命周期进行管理的轻量级容器。容器内放置的都是java对象(java bean),当容器启动时,容器为我们创建对象,容器销毁时,对象也销毁。

提供功能:IOC  AOP  webMVC

2.spring的优点

1.方便解耦,简化开发

通过Spring提供的IOC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

2.AOP编程的支持

通过Spring提供的AOP(面向切面编程)功能,方便进行面向切面的编程,许多不容器用传统OOP(面向对象编程)实现的功能可以通过AOP轻松应付。

3.声明式事务的支持

在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量

4.方便程序的测试

可以用非容器依赖的编程方式进行几乎所有的测试工作,在spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。

5.方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Structs、Hibernate、Hessian、Quartz )等的直接支持

6.降低Java EE API的使用难度

Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

3.Spring体系结构

核心容器由spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring表达式语言,Spring Expression Language)等模块组成,它们的细节如下:

  • spring-core模块提供了框架的基本组成部分,包括 IoC 和依赖注入功能。

  • spring-beans 模块提供 BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦

  • context模块建立在由corebeans 模块的基础上建立起来的,它以一种类似于JNDI注册的方式访问对象。Context模块继承自Bean模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过Servelet容器)等功能。Context模块也支持Java EE的功能,比如EJB、JMX和远程调用等。ApplicationContext接口是Context模块的焦点。spring-context-support提供了对第三方库集成到Spring上下文的支持,比如缓存(EhCache, Guava, JCache)、邮件(JavaMail)、调度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。

  • spring-expression模块提供了强大的表达式语言,用于在运行时查询和操作对象图。它是JSP2.1规范中定义的统一表达式语言的扩展,支持set和get属性值、属性赋值、方法调用、访问数组集合及索引的内容、逻辑算术运算、命名变量、通过名字从Spring IoC容器检索对象,还支持列表的投影、选择以及聚合等。

4.Spring核心容器

spring容器会负责控制程序之间的关系,而不是由程序代码直接控制。Spring为我们提供了两种核心容器,分别为BeanFactory和ApplicationContext

4.1 BeanFactory

创建bean实例时,需要提供Spring所管理容器的配置信息applicationContext.xml,这些信息通畅用xml文件形式来管理,加载配置信息的语法如下:

 BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("F: /applicationContext.xml"));

4.2ApplicationContext

首先需明确的是Application是beanFactory的子接口,是另一种常用的Spring核心容器,不仅实现了BeanFactory 的所有功能,还增加了国际化,资源访问,事件传播等。

常用实现类:

ClassPathXmlApplicationContext 主要获取用户resource路径下的配置

   // 大多数使用用这一种// 通过ApplicationContext 子类ClassPathXmlApplicationContext 去读取配置文件   classpath:可省略
//        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:bean1.xml");

FileSystemXmlApplicationContext 主要获取绝对路径的配置

   // 通过FileSystemXmlApplicationContext 加载 bean 配置文件 容器按照配置文件 初始化对象ApplicationContext applicationContext = new FileSystemXmlApplicationContext("C:\\Users\\ausu\\Desktop\\spring01\\src\\main\\resources\\bean1.xml");

4.3易混淆面试题(FactoryBean与BeanFactory的区别)

FactoryBean 创建对象的工厂接口,在ProxyFactroyBean 继承 FactoryBean 完成创建代理对象

BeanFactory 容器的顶层接口, 主要用于获取容器中的bean ,常用的子接口 ApplicationContext

spring相关:spring介绍与两大核心容器相关推荐

  1. java spring原理详解,spring原理详解,两大核心IOC和AOP

    大家好,我是java梦之旅,一个被Bug耽误了才艺的程序员,专注于Java领域的知识分享和技术交流,每天会给大家带来Java学习的干货教程,喜欢我的同学可以关注我,一起学习,一起加油! 1.概念:sp ...

  2. Java轻量级业务层框架Spring两大核心IOC和AOP原理

    IoC(Inversion of Control): IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些 ...

  3. 【JAVAEE框架】浅谈 Spring 框架的两大核心思想 AOP 与 IOP

    哈喽~大家好呀,这篇来看看Spring 框架的两大核心思想.

  4. Spring框架两大核心特征的基本理解

    Spring框架的两大核心特征:AOP和IoC IoC(控制反转)是Spring的一个容器,他不是一种技术,而是一种思想,依旧是基于面向对象编程的.它能指导我们怎么样设计出松耦合.更优良的程序. 简单 ...

  5. Spring框架的两大核心思想

    Spring框架的两大核心思想 简介:Spring 的主要作用就是为代码"解耦",降低代码间的耦合度.就是让对象和对象(模 块和模块)之间关系不是使用代码关联,而是通过配置来说明. ...

  6. Spring4.x❶ 两大核心之IOC

    1 Spring? 2 IOC案例 2.1 配置文件方法 2.2 注解方法 2.3 配置文件与注解一起使用 3 代码案例可参考: 更多Spring开发在框架开发 1 Spring? Spring是开源 ...

  7. 游戏行业两大核心问题:数据挖掘与安全

    4月19-21日的2016云栖大会深圳峰会,有前沿技术深度分享.Workshop阿里云开放实验室.行业企业聚会.Tech Insight实战干货,更有20+场分论坛,120+高浓度实战演讲,100+阿 ...

  8. BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略

    BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心[HDFS存储和MapReduce计算]).深入理解.下载.案例应用之详细攻略 目录 Hadoop的简介(分布式系统 ...

  9. 奇虎360归程大起底:终极猎手露面 平行入股两大核心平台

    资料图 上证报记者最新获悉,奇虎360私有化的两大平台(SPV)--天津奇信志成科技有限公司.天津奇信通达科技有限公司已于日前完成增资手续,估值分别达40亿美元和117亿美元.除奇虎360董事长周鸿祎 ...

最新文章

  1. Android的NDK开发(4)————JNI数据结构之JNINativeMethod
  2. adxl276怎么添加到proteus中_奶粉中的营养强化剂和食品添加剂是怎么一回事?
  3. Linux 利用yum源安装subversion(svn)客户端
  4. mybatis批量更新
  5. php自定义弹窗,自定义弹窗Style样式
  6. idea for mac 控制台 mvn command not found
  7. 百度测试新搜索结果页面 改进灵感来自谷歌?
  8. 卡卡半智能扫地机器人_扫地机器人哪个牌子好?精选五款高智能的扫地机器人...
  9. 贪 心 学用markdown
  10. 2021浙江高考成绩排名查询,2021年浙江高考成绩排名查询,第一批分数线23日公布...
  11. 疯狂java实验五数据流编程_2017-2018-2 20165209 实验五《网络编程与安全》实验报告...
  12. 『天涯杂谈』走的地方越多,越觉的中国的狭隘
  13. 一步一步在virtual box4.1.6中安装基于rhel5.5x86_64的oracle 10g R2双节点RAC
  14. 找一下不男不女 ?。。?
  15. [转]SEO做关键词的十大分析方法
  16. 怎么去除烦人的WPS广告
  17. 怎样重启Gunicorn
  18. 计量经济学:异方差性
  19. JAVA当中的Document
  20. 大学生学计算机的自我介绍范文带翻译,大学生英语自我介绍带翻译范文.doc

热门文章

  1. IxEngine开发笔记
  2. mysql的三种engine_MySQL 学习之-三种安装方式与版本介绍
  3. 难道我买了一个假路由器?解决光猫引出的路由器网速很慢的问题
  4. 微信小程序跳转第三方H5的方法
  5. 重新认识差评与客户满意度
  6. “我在用生命送快递”
  7. Adobe 认证证书怎么考
  8. C语言计算相对分子质量
  9. Mac已安装应用启动台不显示
  10. SpringBoot所有知识点详解,根据狂神说java老师的整理