《Spring实战》--笔记 第一章 Spring之旅

Spring的核心

  • 依赖注入(dependency injection,DI)
  • 面向切面编程(aspect-oriented programming,AOP)

1.1 简化java开发

spring的根本使命:简化java开发
如何做到:

  1. 基于pojo的轻量级和最小侵入性编程
  2. 通过依赖注入和面向接口实现松耦合
  3. 基于切面和惯例进行声明式编程
  4. 通过切面和模板减少样式代码

1.1.3 应用切面

aop使得日志模块、安全模块、事务管理等与核心业务无关的功能模块抽离出来,通过声明的方式组件化使用他们。核心业务甚至都不知道这些功能存在。

没有aop,非核心业务会到处都是,当你需要修改这些非核心业务时,需要在每块涉及的代码中都修改一遍。而且使得核心功能模块增加了复杂性,需要考虑很多与核心业务无关的内容,例如是否安全,是否支持事务。

通过xml文件来声明切面

在这里插入图片描述

首先把Minstrel bean定义为一个bean。
然后在aop:aspect元素中引用该bean。
在aop:before中声明在embarkOnQuest()方法执行前调用Minstrel的singBeforeForeQuest()方法。这种叫做前置通知(before advice),反之aop:after中声明的叫做后置通知(after advice)。前置通知和后置通知要注入在aop:before中的定义的pointcut。

在该实例中Minstrel的代码完全没有标明它要作为一个切面来使用,但是通过spring配置文件让它变成了一个切面。这点体现了Spring的低侵入性的特点。

1.2容纳你的Bean

Spring自带了多个容器实现,大体分为两种类型

  • bean工厂(由org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,提供基本的DI支持。
  • 应用上下文(org.springframework.context.ApplicationContext接口定义)基于BeanFactory构建,提供应用框架级别的服务。
    (例如 从属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者。)

1.2.1应用上下文

Spring有多个类型的应用上下文。下面几个是常见的。

  • AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
  • AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。
  • ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件 作为类资源。
  • FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
  • XmlWebApplicationContext:从Web应用下的一个或多个 XML配置文件中加载上下文定义。

1.2.2 bean的生命周期

在这里插入图片描述
Spring对bean管理的过程:

  1. Spring对bean进行实例化
  2. Spring将值和bean的引用注入bean对应的属性中
  3. 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBean-Name()方法
  4. 如果bean实现了BeanFactoryAware接口,Spring将bean的ID传递给setBeanFactory()方法,将BeanFactory容器实例传入
  5. 如果bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将bean所在的应用上下文引用传进来
  6. 如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessBeforeInitialization()方法
  7. 如果bean实现了InitializingBean接口,Spring将调用它们的after-PropertiesSetBean()方法。如果bean使用init-Method生命了初始化方法,此方法也会被调用
  8. 如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessAfterInitialization()方法
  9. 此时,bean已经准备就绪,可以使用,它们会一直保存在应用上下文中,直到该上下文被销毁
  10. 如果bean实现了DisposableBean接口,Spring将调用它的destory()接口方法。同样如果bean使用了destory-method声明了销毁方法,该方法同样也会被调用

1.3 俯瞰Spring风景线

Spring模块

Spring框架大致可以分为6个模块
在这里插入图片描述

Spring核心容器
SpringAop
数据访问与集成

Spring的JDBC模板简化了数据库开发。Spring对ORM框架进行了集成。Spring的事务管理支持所有的ORM框架和JDBC

Web与远程调用
Instrumentation

该模块提供了为JVM添加代理的功能。(它为tomcat提供了一个织入代理,能为tomcat传递类文件,仿佛这些文件被类加载器加载了)

测试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值