这是读Spring5高级编程的笔记
依赖注入和依赖查找?
使用依赖查找时,组件必须获取对依赖项的引用,而使用 依赖注入时,依赖项将通过 IoC 容器注入组件。依赖查找有两种:依赖拉取(ApplicationContext ctx = new ClassPathXmlApplicationContext(”app-context.xml”))和上下文依赖查找。依赖注入也有两种:构造函数和setter依赖注入。
在Spring中,除了初始的 bean 查找,组件及其依赖项始终使用注入式 IoC 连接在一起。除了构造函数注入和 setter注入, Spring 提供的另一个不常用的 DI 功能是方法注入 。Spring 方法注入功能有 两种形式: 查找方法注入和方法替换。查找方法注入提供了另一种机 制,通过该机制, bean 可以获得它的一个依赖项;而方法替换允许随意替换 bean 上任何方法的实现, 而无须更改原始源代码。为了提供这两项功能, Spring 使用了 CGLIB 的动态字节码增强功能。
尽量避免使用自动装配。
管理 bean 生命周期:选择使用哪种机制来接收生命周期通知取决于应用程序的需求。如果关心可移植性,或者只需要定义一个或两个需要回调的特定类型的 bean,那么请使用基于方法的机制。如果使用注解类型的配置井确定正在使用 支持 JSR-250 的loC 容器,那么请使用基于注解机制。如果不太在意可移植性,或者正在定义需要生命周期通知的 相同类型的多个bean ,那么使用基于接口的机制是确保 bean 始终能够收到所期望通知的最佳方式。如果打算在多个不同的 Spring 项目中使用 bean, 你肯定希望这个 bean 功能尽可能独立,所以应该使用基于接口的机制。
由于 Spring 提倡使用运行时异常’而不是检查型异常, 因此需要一种机制将检查型 SQL 异常转换为运行时 Spring JDBC异常。
JPA是大多数主要开源社区以及商业供JBoss等都支持的JEE标准。因此, JPA 作为数据访问标准是一种非常有吸引力的选择,如果需要绝对控制查询,可以使用 JPA 的本地查询支持,而不是直接使用JDBC。
Groovy支持动态类型化,通过def声明。还支持闭包,闭包允许将一段代码打包一个对象,并在应用程序呢自由传递,可实现智能和动态行为。其中,each()方法的参数就是一个闭包。
1
2def names = ['john','sjt']
names.each {println 'Hello : ' + it}