• Spring 3.x 企业应用实战—— IoC 概述


      Spring中IOC的概念,控制反转概念其实包含两个层面的意思,“控制”是接口实现类的选择控制权;而“反转”是指这种选择控制权从调用者转移到外部第三方或容器的手中。BeanFactory、ApplicationContext和WebApplicationContext是Spring框架三个最核心的接口,框架中其他大部分的类都围绕他们展开、为他们提供支持和服务。在这些支持类中,Respurce是一个不可忽视的重要接口,框架通过Resource实现了和具体资源的解耦,不论他们位于何种存储介质中,都可以通过相同的实例返回。与Resource配合的另一个接口是ResourceLoader,ResourceLoader采用了策略模式,可以通过传入资源地址的信息,自动选择适合的底层资源实现类,为上层对资源的引用提供极大的便利。

    一、IOC 控制反转:
    1、“控制”是指接口实现类的选择控制权
    2、“反转”是指这种选择控制权从调用类转移到外部第三方类或者容器手里

    二、Spring三大最核心接口:

    BeanFactory

      1、Spring框架的基础设施,面向Spring本身。
      2、在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean
      3、若需要对bean定义后处理器,必须在代码中通过手工调用spring方法进行注册
      4、初始化方式 new XmlBeanFactory(new Resource())

    ApplicationContext
      1、面向使用Spring框架的开发者,几乎所有的应用场合我们都直接使用ApplicationContext文件中定义的 Bean 
      2、在初始化应用上下文时就实例化所有的单例的Bean
      3、若需要对bean定义后处理器,其会利用反射机制自动识别出配置文件中的Processor,并自动注册到应用上下文中
      4、初始化方式
        new ClassPathXmlApplication("classpath:bean.xml")
        new FileSystemXmlApplicationContext("file:beans.xml")
        new AnnotationConfigApplicationContext(Beans.class)

    WebApplicationContext
      1、WebApplication需要ServletContext实例,也就是说他必须要在拥有Web容器的前提下才能完成启动工作。
      2、Spring分别提供了用于启动WebApplicationConetext的Servlet和Listener,在web.xml中配置
        org.springframework.web.context.ContextLoaderServlet
        org.springframework.web.context.ContextLoaderListener
      3、WebApplicationContext需要使用日志功能
        用户可以将Log4j配置文件放到类路径 WEB-INF/classes下,这时Log4j引擎即可顺利启动
        用户可以在web.xml中通过Log4jConfigServlet和Log4jConfigListener指定Log4j配置文件位置,但要注意启动顺序(load-on-startup)
      4、使用标注@Configuration的java类提供信息,contextClass、contextConfigLocation

    三、Bean生命周期改变方式:
      1、<bean>中的init-method 和 destroy-method 这两个属性为Bean指定初始化和销毁的方法
      2、InitDestroyAnonotationBeanPostProcessor 的 @PostConstruct、@PreDestroy

    思维导图:

  • 相关阅读:
    jwt的简单使用
    使用golang对海康sdk进行业务开发
    产品项目开发流程
    Unity在场景切换之间清理下内存
    Unity3d中第三人称摄像机跟随的实现
    unity3d中利用网格去绘制血条
    java内存泄露原因简单总结
    线程安全的多参构建器实现
    java单例模式,多线程下实现
    forward和redirect的简单区别
  • 原文地址:https://www.cnblogs.com/renwei/p/5733896.html
Copyright © 2020-2023  润新知