您的位置:首页 > 编程语言 > Java开发

《精通Spring 4.x 企业应用开发实战》学习笔记

2018-10-16 15:56 866 查看

第四章 IoC容器

4.1 IoC概述

  IoC(Inverse of Control 控制反转),控制是指接口实现类的选择控制权,反转是指这种选择控制权从调用类转移到外部第三方类或容器的手中。

  也就是由Spring容器借由Bean配置来进行控制。

  DI(Dependency Injection 依赖注入):让调用类的某一接口实现类的依赖关系由第三方容器注入,以移除调用类对某一接口实现类的依赖。

  由于IoC的概念不太好理解,所以用DI这个概念来代替IoC。

 

第三方容器:

  它帮助完成类的初始化和装配工作,让开发者从这些底层实现类的实例化、依赖关系装配等工作中解脱出来,专注于更有意义的业务逻辑开发工作。

  Spring容器通过配置文件或注解描述类与类之间的依赖关系,自动完成类的初始化和依赖注入工作。

 

4.4 BeanFactory和ApplicationContext

 

 

第五章 在IoC容器中装配Bean

  在实际应用中,大部分Bean都能以单实例的方式运行,所以Spring将Bean的默认作用域定位singleton。

  默认下,ApplicationContext容器在启动时,自动实例化所有singleton的Bean并缓存于容器中。

  采用scope=“prototype”指定非单例作用域的Bean。

 

使用注解定义Bean:

 

 

自动装配Bean:

  @AutoWired默认按类型匹配的方式在容器中查找匹配的Bean。

  如果希望Spring即使找不到匹配的Bean完成注入也不要抛出异常,那么可以使用@AutoWired(required=false)进行标注。

  如果容器中有一个以上匹配的Bean时,则可通过@Qualifier注解限定Bean的名称。如:@Qualifier("baseDao")。

  虽然Spring支持在属性和方法上标注@AutoWired,但实际开发中建议在方法上标注@AutoWired,因为这样更加面向对象,也方便单元测试的编写。

 

延迟依赖注入:

  Spring4.0支持,在Bean上标注@Lazy@AutoWired,不会立即注入属性,而是延迟到调用此属性时才注入属性。

 

 

对标准注解的支持:

  @Resource和@Inject这两个注解和@AutoWire类似。

  @Resource默认按名称匹配注入Bean,要求提供一个Bean名称的属性,如果属性为空,则自动采用标注处的变量名或方法名作为Bean的名称。

  @Inject和@AutoWire同样也是按类型匹配注入Bean的,只不过没有required属性。

 

Bean的作用范围:

 

 

 

第七章 Spring AOP基础

  

 

 

  AOP(Aspect Oriented Programing 面向切面编程)

  无法通过抽象父类的方法消除重复的横切代码,因为横切逻辑依附在业务类方法的流程中,不能转移到其他地方去。

  AOP将这些分散在各个业务逻辑代码中的相同代码通过横向切割的方式抽取到一个独立的模块中。

 

  当某个方法需要进行性能监测时,要在业务代码的前后加上开启/关闭性能监测的代码。这些非业务逻辑代码破坏了业务逻辑的纯粹性。

  我们希望通过代理的方式将性能监测的横切代码从业务类中完全移除,并通过动态代理技术将横切代码动态织入目标方法的相应位置。

 

连接点和切点:

  连接点是程序执行的某个特定位置,如类初始化前,类初始化后,方法调用前,方法调用后。

  连接点相当于数据库中的记录,切点相当于查询条件,一个切点可以匹配多个连接点。

 

增强(Advice):

  增强既包含用于添加到目标连接点上的一段执行逻辑,又包含用于定位连接点的方位信息。

  增强接口如:BeforeAdvice、AfterReturningAdvice

 

织入:

  织入是将增强添加到目标类的具体连接点上的过程。

  Spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入。

 

切面(Aspect):

  切面由切点和增强组成,Spring AOP是负责实施切面的框架,它将切面所定义的横切逻辑织入切面所指定的连接点中。

 

增强类型:

  前置增强(BeforeAdvice):在目标方法执行前实施增强。

  后置增强(AfterReturningAdvice):在目标方法执行后实施增强。

  环绕增强(MethodInterceptor):在目标方法执行前后实施增强。

  异常抛出增强(ThrowsAdvice):在目标方法抛出异常后实施增强。

  引介增强(IntroductionInterceptor):在目标类中添加一些新的方法和属性。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐