一、Spring框架概述
1、 Spring框架提供了一个开发平台,用于整合其他技术,例如Struts,Hibernate,Mybatis等。举个例子Spring就像是一台电脑的主板,为各种硬件设施提供了接口,CPU,内存,硬盘都有各自的接口。这样做的好处也是显而易见的,比如在改善系统的结构方面,更利于系统的扩展和升级。
     2、作用:a,提供了整合其他技术的API
                   b,提供了创建对象的功能,这样Spring就编程了一个大的工厂,所以spring是一个具有工厂功能的框架
                   c,spring提供了两种非常重要的机制IOC和AOP,这样的好处是降低了组件对象之间的耦合度。
                   
二、Spring框架基本应用
1、对象创建功能,有两种方式
           a,使用配置文件:
           i.添加spring-ioc开发jar包到build-path
           ii.在src下添加applicationContext.xml配置文件
           iii.将bean组件在配置文件中定义(bean组件也就是需要使用spring创建的对象),
           iiii.实例化spring容器对象,调用getBean(“标示符”)获取Bean对象。
           b,使用注解:
           (何为注解,就是在类定义、方法定义或成员变量前追加@标记)
           spring可以利用对组件追加注解,实现自动扫描功能,这样可以代替xml文件中冗杂的
           Spring扫描标记有:
           @Component:其他组件使用
           @Reposity:DAO使用
           @Service:业务层组件使用
           @Controller:控制层组件使用
           扫描组件后,id标示符默认为类名首字母小写,可以通过@Service(“id标示符”)来指定。
           @Scope:等价于scope属性
           @PostConstruct:等价于init-method属性
           @PreDestroy:等价于destroy-method属性
           使用方法:
           i.在spring配置文件中开启组件扫描<
           ii.在组件类定义中使用上述相应的标记
tip:在属性变量或set方法前,使用@Resource标记,Spring会采用类型匹配规则注入。对于多个类型相同的可以采用@Resource(name="要注入Bean的id值")格式。
    -----------------------------
     Spring提供了一个@Autowired标记,作用与@Resource相同,都是按类型匹配注入。如果需要注入指定名称的Bean对象,格式如下:
    @Autowired
    @Qualifier("id值")
2、IOC机制
          a,概念:字面意思是控制反转,可以理解为组件之间的调用,将组件对象的创建和关系的建立由第三方框架或容器负责。
          b,IOC实现原理——依赖注入
          当两个组件存在使用关系时,也就是存在依赖关系。依赖关系建立可以通过以下几种注入途径:
          —-setter方式注入,通过set方法将DAO传入
               在Action中定义属性变量和set方法
               在
          —-构造方式注入
   通过构造器将DAO传入
  在Action中定义属性变量和带参数的构造方法
  在
                   
3、AOP机制
          1),AOP又被称为面向方面编程,其实就是在面向对象的基础上又进行了一次封装,由与面向对象是将共同的属性和方法封装起来,而面向方面编程则是面向共同的方面逻辑,就像事务和异常,所有的对象都会产生这样一个共性的方面。
          2),AOP编程概念
  a.方面(Aspect)
   封装共通处理部分的组件。方面
组件可以被切入到其他目标组件
方法上的。
  b.切入点(Pointcut)
   负责指定哪些组件方法调用
方面(共通)处理.通过一个表达式
指定。
  c.连接点(JoinPoint)
   切入点是连接点的集合。连接点
包含了方面和目标方法关联的信息。
例如当前作用的目标组件类型和作用
的方法名等信息。
  d.通知(Advice)
    负责指定方面处理和目标组件
方法之间的作用关系。例如先执行
方面处理再执行目标处理;先执行
目标处理再执行方面处理等
  e.目标(Target)
   启用方面处理的组件,即切入点
指定的组件
          c,AOP的实现
          AOP是通过使用动态代理技术实现的,实现过程,当采用AOP切入之后,Spring容器返回的目标对象是采用动态代理技术生成的一个类型。该类型会重写原目标的方法,内部会调用原目标的方法和方面处理。
          3), AOP编程实现
          a,引入aop开发包
          b,编写方面组件,引入AOP组件
          c,添加spring的AOP配置1
2
3
4
5
6
7
8
9 <aop config>
  <!-- 指定切入点 -->
  <aop:pointcut id="切入点name" expression="witnin(org.tarena.action..*)"/>//action包内所有的类的方法指定为切入点
  <!-- 指定方面 -->
  <aop:aspect id="" ref="">
       <!-- 通知 around这里可以指定多种类型-->
       <aop:around pointcut-ref="切入点name" method="方面方法名字" />
  </aop:aspect>
</aop:config>
d,使用注解的方式
    首先在spring的xml配置文件中开启AOP注解配置
   @Component扫描到容器
   @Aspect指定成方面组件
   @Around环绕通知
   @Before前置通知
   @AfterReturning后置通知
   @After最终通知
   @AfterThrowing异常通知