1.spring框架的核心功能有两个:

  • spring容器作为超级大工厂,负责创建,管理所有的java对象,这些java对象被称为Bean。
  • spring容器管理容器bean之间的依赖关系,spring使用一种被称为“依赖注入”的方式来管理bean之间的依赖关系。

2.理解依赖注入:

以配置文件来管理java实例的协作关系,称之为控制反转(Inverse of control,IoC)。

后来起了个新名字:依赖注入(Dependency Injection)。

3.当某个Java对象(调用者)需要调用另一个Java对象(被依赖对象)的方法时,在传统模式下通常有两种做法:

  • 1.原始做法:new一个对象,主动创建被依赖对象,然后调用其方法;
  • 2.简单工厂模式:找到被依赖对象的工厂,主动通过工厂去调用被依赖对象。

主动二字,这必然会导致调用者与被依赖对象实现类的硬编码耦合,非常不利于项目升级的维护。

4.spring框架中:

调用者无需主动获取被调用对象,只需被动接收spring容器为调用者的成员变量赋值即可。

5.spring的零配置支持

spring提供如下几个Annotation来标注bean:

  • @Component:标注一个普通spring bean类;
  • @Controller:标注一个控制器类组件;
  • @Service:标注一个业务逻辑组件类;
  • @Repository:标注一个Dao类组件;

在spring配置文件中做如下配置,指定自动扫描的包;

<context:component-scan base-package="edu.shu.spring.domain"/>

使用@Resource配置依赖

@Resource位于javax.annotation包下,是来自JavaEE规范的一个Annotation,Spring直接借鉴了该Annotation,通过使用该Annotation为目标Bean指定协作者Bean。使用@Resource与``元素的ref属性有相同的效果。

使用@PostConstruct和@PreDestroy定制生命周期行为

@PostConstruct@PreDestroy同样位于javax.annotation包下,也是来自JavaEE规范的两个Annotation,Spring直接借鉴了它们,用于定制Spring容器中Bean的生命周期行为。它们都用于修饰方法,无须任何属性。其中前者修饰的方法时Bean的初始化方法;而后者修饰的方法时Bean销毁之前的方法

Spring4.0增强的自动装配

Spring提供了@Autowired注解来指定自动装配,@Autowired可以修饰setter方法、普通方法、实例变量和构造器等。当使用@Autowired标注setter方法时,默认采用byType自动装配策略。

精确装配

Spring提供了@Qualifier注解,通过使用@Qualifier,允许根据Bean的id来执行自动装配。

Spring的AOP

AOP(Aspect Orient Programming)也就是面向切面编程,作为面向对象编程的一种补充,已经成为一种比较成熟的编程方式

1.AOP的基本概念

  • 切面(Aspect): 切面用于组织多个Advice,Advice放在切面中定义。
  • 连接点(Joinpoint): 程序执行过程中明确的点,如方法的调用,或者异常的抛出。在Spring AOP中,连接点总是方法的调用。
  • 增强处理(Advice): AOP框架在特定的切入点执行的增强处理。有"around"、"before"和"after"等类型
  • 切入点(Pointcut): 可以插入增强处理的连接点。简而言之,当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点

2.Spring的AOP支持

Spring中的AOP代理由Spring的IoC容器负责生成、管理,其依赖关系也由IoC容器负责管理。
为了在应用中使用@AspectJ支持,Spring需要添加AspectJ依赖