spring 组建及核心内容的简介(一)

一:为了降低java开发的复杂性,spring采取了以下四种关键策略,sping所做的任何事情都会追溯到下述的一条或者多条策略
①:基于POJO的轻量级和最小侵入性编程
②:通过依赖注入和面向接口实现松耦合
③:基于切面和惯例进行声明式编程
④:通过切面和模板减少样板式编程
二:耦合:耦合具有双面性,耦合是必须的,但应当被小心谨慎的管理
坏处:一方面,紧密耦合的代码难以测试,难以复用,难以理解.
好处:一定程度的耦合又是必须的,完全没有耦合的代码什么也干不了
高度耦合代码坏处:
(1)维护麻烦
(2) 不容易进行代码测试
这里写图片描述

弱耦合的代码好处:
(1)如果一个对象只通过接口而不是具体的实现或者初始化过程来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情况下,用不同的具体实现进行替换.
(2)测试起来方便
好处

三:依赖注入(DI)
①:好处: 代码变得异常简单并且更容易测试和理解
②:作用:通过DI,对象的依赖关系将由系统中负责协调各个对象的第三方组件在创建对象的时候进行设定,
对象无需自行创建或者管理他们的依赖关系,通过DI的最大收益就是解耦合
③:注入方式 构造器注入(constructor injection)
四:装配 创建组件之间相互协作的行为被称为装配
①:装配方式 xml是常见的装配方式
这里写图片描述
②:spring还支持使用java来配置,替代XML配置
这里写图片描述

五:应用切面
①:DI能够让相互协作的软件组织保持松散耦合,而面向切面编程允许你把遍布应用各处的功能分离出来形成可重用的组件
②:作用 可以将关注点与业务核心代码分离.例如 日志 安全 事务

六:使用模板消除样板式代码
常用的样板式代码是使用JDBC访问数据库查询数据

七:容器 在spring应用中,对象生存于spring容器中,spring容器负责创建对象,装配他们,配置管理他们的整个生命周期,从生存到死亡.容器是spring的核心,spring容器使用DI管理构成的应用组件,创建相互协作的关联
①:spring容器并不只有一个,spring自带了多个容器的实现,可以归纳为2大类.
(1)bean工厂是最简单的容器,提供基本的DI支持.
(2)应用上下文基于BeanFactory构建,并提供了应用框架级别的服务,例如从属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者

②:spring通过应用上下文(Application Context)装载bean的定义并把他们组装起来.spring应用上线文全权负责对象的组装与创建.spring自带了多种应用上下文的实现,他们的区别主要在于如何加载配置

  1. AnnotationConfigApplicationContext:从一个或者多个基于Java的配置类中加载Spring应用上下文
  2. AnnotationConfigWebApplicationContext:从一个或者多个基于Java的配置类中加载spring web应用上线文
  3. ClassPathXmlApplicationContext:从类路径下的一个或者多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源
  4. FileSystemXmlapplicationcontext:从文件系统下的一个或者多个xml配置文件中加载上下文定义
  5. XmlWebApplicationContext:从web应用下的一个或多个XML配置文件中加载上下文定义
    这里写图片描述

八:bean的生命周期

  1. spring对bean进行实例化 –实例化
  2. spring将值和bean的引用注入到bean对应的属性中 –填充属性
  3. 如果bean实现了BeanNameAware接口,spring将bean的id传递给setBeanName()的方法 –调用setBeanName()
  4. 如果bean实现了BeanFactoryAware接口,Spirng将调用setBeanFactory()方法,将beanFactory容器实例传入
  5. 如果bean实现了ApplicationContextAware接口,spring将调用setApplicationContext()方法,将bean所在的应用上下文的引用引入进来
  6. 如果bean实现了BeanPostProcessor接口,spring将调用它们的postProcessBeforeInitialization()方法
  7. 如果bean实现了InitializingBean接口,spring将调用它们的afterPropertiesSet()方法,类似的如果bean使用了init-method声明了初始化防范,该方法也会被调用
  8. 如果bean实现了BeanPostProcessor接口,spring将调用它们的postProcessAfterInitialization()方法
  9. 此时,bean准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,知道该应用上下文销毁
  10. 如果bean实现了DisposableBean接口,spring将调用它们的destory()接口方法,同样如果bean使用了destroy-method声明了销毁方法,该方法也会被调用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值