关于Spring的部分整理

什么是Spring

Spring是一个开源容器框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一个个的 Bean,这样就可以实现各种功能的管理,包括动态加载和切面编程。

Spring的优点

1.能有效地阻止你的中间层对象
2.能消除许多工程中常见的对Spring的过多使用
3.能消除各种各样自定义格式的属性文件的需要,使配置信息一元化
4.能够帮助我们真正意义上实现针对接口编程
5.支持JDBC和O/R Mapping产品(Hibernate)
6.能使用AOP提供声明性事务管理,可以不直接操作JTA也能够对事务进行管理

AOP(切面编程)

AOP称为面向切面编程,是一种通过预编译方式和运行期间,动态代理实现程序功能的统一维护的技术

AOP基本概念

  • 切面(Aspect):就是你要实现的交叉的非核心业务功能
  • 连接点(JoinPoint):应用程序执行过程中插入切面的地点,可以是方法调用,异常抛出
  • 通知(Advice):通知切面的实际实现代码
  • 切入点(Pointcut):定义通知应用在哪个连接点
  • 目标对象(Target):被通知对象
  • 代理(Proxy):将通知应用到目标对象后创建的对象
  • 织入(Weaving):将切面应用到目标对象从而创建一个新的代理对象

AOP通知类型

  • 前置通知(Before):目标方法执行前调用
  • 后通知(After):目标方法执行后调用
  • 返回后通知:目标方法正确执行后调用
  • 环绕通知(Around):目标方法执行前,执行后都需要调用
  • 抛出异常通知(Throws):目标方法抛出异常时调用

IOC(控制反转)

控制反转模式的基本概念:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在Spring框架中是IOC容器)负责将这些联系在一起

IOC的三种实现类型

1、接口注入

public class ClassA { 
   private InterfaceB clzB; 
   public InterfaceB  doSomething() { 
      Ojbect obj = Class.forName(
               Config.BImplementation).newInstance(); 
      clzB = (InterfaceB)obj; 
      return clzB;
    } 
}

2、设值注入

public class Sport {
     private InterfaceBall ball;
     public void setBall(InterfaceBall arg) {
           ball = arg;
     }
}

3、构造器注入

public class DIByConstructor {
     private  DataSource dataSource;
     public DIByConstructor(DataSource ds) {
         this.dataSource = ds;
     }
……
}

spring的IOC容器

  • BeanFactory

    从容器中取出的组件,为懒加载方式(延迟加载)

  • ApplicationContext

    ApplicationContext是BeanFactory的子接口,从容器中取出的组件,为立即加载方式
    提供配置类、注解等多种加载方式,实例化Spring容器中管理的组件,并协作对象间的关联关系

ApplicationContext的实现类

- ClassPathXmlApplicationContext: spring使用XML配置文件注册组件,XML文件必须放在类路径下
- FileSystemXmlApplicationContext:spring使用XML配置文件注册组件,可以指定相对路径和绝对路径,查找XML文件
- XmlWebApplicationContext:spring使用XML配置文件注册组件,根据WEB应用程序的部署路径查找XML文件
- AnnotationConfigApplicationContext:spring使用配置类和注解注册组件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值