spring实战3.0 第一部分spring的核心 要点记录

来源:互联网 发布:网络打鱼游戏平台 编辑:程序博客网 时间:2024/06/06 03:03

用了一周的时间断断续续的把这本书的基础部分看完,担心自己没什么印象决定记一下笔记,记录一些要点。

主要讲了两个概念:DI(依赖注入)、AOP(切面编程)

DI(构造器注入)

紧密耦合的代码:难以测试、难以复用、难以理解,而完全没有耦合的代码什么也做不了。而依赖注入就是为了解决这方面的问题的。

如果一个对象只通过接口(而不是具体实现或初始化的过程)来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情况下用不同的具体实现来替换。

AOP 想象为覆盖在很多组件上的一个外壳。




我觉得书中的这两个图很明确的介绍了什么是AOP

spring容器主要分为两类:Bean工厂和应用上下文(application context)

getbean 有两种方式:通过构造器注入对象引用;通过工厂方法创建bean(既没有构造器通过静态方法创建)factory-method=“ ”;

注入bean属性:通过调用属性的setter方法注入,<constructor-arg>\<property name=" "  value=" "/ref=" ">\<p:shuxing=" "\p:shuxing-ref=" ">

springBean 默认是单例模式,可以自己设置范围

内部bean仅适用于一次注入,而且不能被其他bean引用

应用注解自动装配bean

有四种类型:byname\bytype\construstor\autodetect  在xml中可用default-autowire  需要添加 <context : annotation-config>

String 标识的缺点是它们无法进行编译期间检查,spring都会拦截方法的调用,并尝试在应用上下文查找该bean,而不是让方法创建一个新实例。

@Autowired(required=false)//bean  可以不存在

自动检测bean

<context : component-scan>

<context : include-filter>

<context : exclude-filter>

依赖注入有助于应用对象之间的解耦,而AOP可以实现横切关注点与它们所影响的对象之间的解耦。

术语:advice 通知、pointcut 切点、joinpoint 连接点 

比如通知管的是何时,什么,那么切点管的是何处,切面是通知和切点的结合(什么、何时、何处)、一个切点可以管着很多连接点

引入(Introduction)允许我们向现有的类添加新方法或属性

织入(weaving)是将切面应用到目标对象来创建新的代理对象的过程

创建切点来定义切面织入的连接点是AOP框架的基本功能

spring只支持方法连接点(因为spring动态代理)不支持字段和构造器

proxy factory 代理工厂