《 Spring 实战 》(第4版) 读书笔记

版权声明:这可是本菇凉辛辛苦苦原创的,转载请记得带上我家地址,不要忘记了哈 ... https://blog.csdn.net/u011314442/article/details/83933949

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

猜你喜欢

转载自blog.csdn.net/u011314442/article/details/83933949
今日推荐