Spring框架学习笔记

-----------------------------Spring框架-------------------------
一、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创建的对象),<bean id="标示符" class="组件类型(包名.类名)"/>
           iiii.实例化spring容器对象,调用getBean("标示符")获取Bean对象。
           b,使用注解:
           (何为注解,就是在类定义、方法定义或成员变量前追加@标记)
           spring可以利用对组件追加注解,实现自动扫描功能,这样可以代替xml文件中冗杂的<bean>元素定义。自动扫描技术可以扫描指定package下的组件,当发现组件定义前有Spring指定的标记时,就会将该组件扫描到Spring容器,等价于定义了一个<bean>元素。
           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方法
               在<bean>定义配置时,指定注入<property name="属性名" ref="要注入的Bean组件id值"></property>
          ---构造方式注入
   通过构造器将DAO传入
  在Action中定义属性变量和带参数的构造方法
  在<bean>定义配置时,指定注入<constructor-arg index="参数索引值" ref="要注入的Bean组件id值">
                   </constructor-arg>
     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组件<bean>
          c,添加spring的AOP配置
              <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注解配置<aop:aspectj-autoproxy />,方面组件中使用下面标记
               @Component扫描到容器
   @Aspect指定成方面组件
   @Around环绕通知
   @Before前置通知
   @AfterReturning后置通知
   @After最终通知
   @AfterThrowing异常通知



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值