Pxx 表示在书的第 xx 页。
Spring 框架的核心是 Spring 容器。
1. (P7.) 构造器注入是依赖注入的方式之一。
紧耦合:在 A 类的无参构造器中直接 new 出一个 B 类。
Spring 松耦合:在 A 类中使用有参构造器,把 B 类的超类类型 X 作为构造参数传入。
这样不需要 A 类管理 B 类,并且可以根据不同情况传入不同的实际参数,只是 X 的子类就可以注入到 A 中使用。A
2. (P15) .A 类中有一个 x 方法,B 类有 y ,z 方法。在 x 方法执行前后分别执行 y,z 方法要显示的写出调用代码 。
Spring aop :把 A 类声明为一个切面。把 A 声明为一个 bean , 定义切入点 ( 包含 x 方法 ) ,分别配置 y,z 为前置、后置通知。这样 A 类完全不知情时就已经调用执行 B 类的对应方法了。
3. (P34.) 装配 (wiring):创建应用对象之间协作关系的行为,这也是依赖注入(DI)的本质。
Spring 有三种主要装配机制:在 xml 中进行显示配置、在 java 中进行显示配制、隐式的 bean 发现机制和自动装配。
Spring 从两个角度来实现自动化装配 :
组件扫描 (component scanning)- Spring 会自动发现应用上下文中所创建的 bean 。
自动装配 (autowiring) - Spring 自动满足 bean 之间的依赖。
4. (P37.) 扫描包的方式:
1)@ComponentScan 默认会扫描与配置类相同包的类。
2)指定扫描包: @ComponentScan(basePackages="单个类名")、 @ComponentScan(basePackages={“第一个包名”,“第N个包名”}) 、@ComponentScan(basePackagesClasses={A.class,B.class})
最后一种方式利于重构代码,A 、B 类是接口类型的话,改变实现类的类名,在扫描包时不受影响。
5. (P38.)
import static org.junit.Assert.*;
导入此类,可以调用方法 assertNotNull(要检查的对象); 来检查对象是否为 null 。
6 . (P38.) Spring 应用上下文中所有的 bean 都会给写一个 ID , 这个 bean 所给写的 ID 为类名的第一个字母变小写。
可以显示的给 bean 命名,有 2 种方式 :@Compnent ("这个位置写名字") 、@Named ("这个位置写名字") 。
---------- 创建于 2018.11.10
7 . (P41.) 注解 @Autowired 可用在构造方法上,属性的 Setter 方法上,以及任何方法上。当有且仅有一个 bean 匹配依赖需求,就会装配起来。当没有匹配时会抛出异常。此时可设置 @Autowired 的属性 required 为 false :@Autowired(required = false),不作检查,但这样没有匹配到 bean ,则 bean 处于未装配状态,如果代码也未作 null 检查,可能会出现 NPE(空指针异常)。
@Autowired 可用@Inject 代替。
8 . (P44.) JavaConfig 是配置代码,不包含任何业务逻辑,应当单独放到一个包中。
9 . (P45.) @Bean 会告诉 Spring 这个方法将会返回一个对象,该对象要注册为 Spring 应用上下文中的 bean 。bean 的 ID 与带有 @Bean 注解的方法名是一样的。设置不同名字可以重命名方法名,也可以通过 name 属性指定不同的名字:@Bean(name = "新名字") 。
10 . (P48.) 可用 Spring Tool Suite 创建 XML 配置文件,并可选择对应的命名空间。
11 . (P49.) XML 中的 <bean> 类似于 JavaConfig 中的 @Bean 。 <bean class = "此处要写全限定名(全类路径)"> 。
Spring 发现 <bean> 默认调用构造器创建 bean。
12 . (P56.) 装配通用规则:对于强依赖使用构造器注入,对于可选性的依赖使用属性注入。
在 XML 中,<property> 对应属性的 Setter 方法,<constructor-arg> 对应类的构造器。
13 . (P62.) 导入其它配置:
@Import (XXConfig.class) 可导入另一个配置类中的配置。
@Import ({AConfig.class,BConfig.class } ) 可以导入多个。
@ImportResource ("classPath : cd-config.xml") 可以导入 cd-config.xml 中的配置。
---------- 更新于 2018.11.11