spring1


spring:
为什么要使用SRPING?
1、简化企业级程序的开发(提供大量企业级服务的再次封装)
2、框架容易集成其它子框架
3、提供IOC/AOP容器,可以将业务对象组装到一起,并提供灵活的中间件服务
4、轻量(大小合适,并且是非侵入式方案)


 开发环境:
  jar: spring.jar,jakarta-commons/*.jar
  
 第一个程序:
  
 IOC:
 控制反转?
  对象必须协作才能完成某种业务
  
  以前:对象自己寻找协作对象
  现在:协作对象由外部实体提供。
  
  组件之间的依赖关系,由容器在运行期决定,也就是说,由容器动态地将某种依赖关系注入到组件中。
 
 IOC又叫依赖注入
 装配:
  容器根据配置文件将协作对象实例化,建立这些对象之间的关系。
  
  容器:(PPT39)
  org.springframework.beans.factory.BeanFactory
   Bean工厂
    提供最基本的Bean的生命周期管理和装配。
    直到调用getBean方法时,才真正实例化Bean。
   getBean(Bean's id)
  org.springframework.beans.factory.xml.XmlBeanFactory
   它可以依据Resource找到相应的配置文件
   Resource rs = new ClassPathResource(配置文件的相对路径)
   BeanFactory factory = new XmlBeanFactory(rs);
  org.springframework.context.ApplicationContext
   应用上下文
    应用上下文提供更多的功能,包括资源获取、国际化,事件处理等等。
    对于有单例要求的实例,在加载的时候就已经实例化。
  org.springframework.context.support.ClassPathXmlApplicationContext
    ApplicationContext实现,它可以依据Classpath查找配置文件
    ApplicationContext ctx
     = new ClassPathXmlApplicationContext(配置文件的相对路径)
     其它实现:XmlWebApplicationContext,FileSystemXmlApplicationContext
      
  作用,使用方式,区别
  组件:
  组件的生命周期(见图)
  
  基本装配:
    IOC的实现方式:
    (1)基于接口 type1:要求组件实现容器提供的特定的接口,这种方案
    属于浸入式方案,耦合性大,现在不再使用。
    (2)基于set方法 type2
    (3)基于构造器 type3
    
    set方式:
     基本类型:8种基本类型+String
         <property><value>值</...>
         对于基本类型,也可有简写形式
     Object: 
         <property><ref bean="bean的id"/></...>
          
         <property><ref local="bean的id"/></...>
          local要求两个Bean在同一个配置文件里
          
         <property><bean id.....></..>
          该Bean只能被当前Bean使用
     集合:(P24)
      list,set,map,properties
      也支持泛型
     null:
      <property><null/>
    
    构造器方式:
     
     
    比较set与构造器方式:
     构造器方式优点:
      可以保证所有要使用的属性一定初始化了。
      
    
    自动装配:(PPT34)
     让容器依据某种规则,自动地对组件实施装配
     autowire=""
      byName:匹配属性名与bean的名字
      byType:寻找配置文件,匹配属性的类型与bean 的类型,成功就设置
         如果匹配的个数超过一个,报错。
      constructor:匹配构造器,看构造器的参数类型与bean的类型是否一致,
      成功就设置,如果匹配的个数超过一个,报错。
      autodetect:先按照constructor,然后byType
      
    示例:
    检查装配情况:
    dependency-check=""
     simple:检查基本类型属性是否装配成功
     object:检查Object类型装配是否成功
     all:全检查
    
    dependency-check与autowire配合使用。
    尽量少用autowire,在原型开发的时候用于快速开发。
    
    装配中的其它情况: 
    
     单例:
      scope=""
      singleton,prototype
      
     初始化与销毁
      init-method,destroy-method
       在非WEB应用中,对于Singleton的Bean所设置的destroy方法,可执行
       AbstractApplicationContext.registerShutdownHook()。
         
     Bean定义的继承:
      继承抽象:abstract="true",parent=""
      也可直接继承
   
     工厂方式创建实例:(ppt30)
      静态工厂
      factory-method=""
      工厂
      factory-bean=""
      factory-method=""
  
  
     

你可能感兴趣的:(spring,bean,object,properties,IOC,Constructor)