zoukankan      html  css  js  c++  java
  • Spring 常见问题

    1. Spring如何实现事件处理? 

    事件 ??Extends ApplicationEvent 

    监听器 ??Implements ApplicationListener 

    事件源 ??Implements ApplicationContextAware 

    在applicationContext.xml中配置事件源、监听器 先得到事件源,调用事件源的方法,通知监听器


    2、简述你对IoC(Inversion of Control)的理解 
    一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C的实例,但这种方法显然两者的依赖(Dependency)太大了。而IoC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现C放入IoC的 容器(Container)中,通过一定的配置由容器(Container)来实现类A与接口B的实现C的关联。


    3、 如何在web应用里面配置spring? 
    在J2EE的web应用里面配置spring非常简单,最简单的只需要把spring得ContextLoaderListener添加到你的web.xml文件里面就可以了,示例如下: 

    <listener>     
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

    </listener>


    4. spring中的BeanFactory与ApplicationContext的作用和区别? 作用: 
    1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。 
    2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:
    a. 国际化支持 
    b. 资源访问:Resource rs = ctx. getResource(”classpath:config.properties”), “file:c:/config.properties” 
    c. 事件传递:通过实现ApplicationContextAware接口 3. 常用的获取ApplicationContext的方法: FileSystemXmlApplicationContext:从文件系统或者url指定的xml配置文件创建,参数为配置文件名或文件名数组 
    ClassPathXmlApplicationContext:从classpath的xml配置文件创建,可以从jar包中读取配置文件 
    WebApplicationContextUtils:从web应用的根目录读取配置文件,需要先在web.xml中配置,可以配置监听器或者servlet来实现 


     
     5.spring 的优点?

      1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
      2.可以使用容易提供的众多服务,如事务管理,消息服务等
      3.容器提供单例模式支持
      4.容器提供了 AOP 技术,利用它很容易实现如权限拦截,运行期监控等功能
      5.容器提供了众多的辅助类,能加快应用的开发
      6.spring 对于主流的应用框架提供了集成支持,如 hibernate,JPA,Struts 等
      7.spring 属于低侵入式设计,代码的污染极低
      8.独立于各种应用服务器
      9.spring 的 DI 机制降低了业务对象替换的复杂性
      10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring 的部分或全部


    6.什么是 AOP?
    面向切面编程(AOP)完善 spring 的依赖注入(DI),面向切面编程在 spring 中主要表
       现为两个方面:
       1.面向切面编程提供声明式事务管理
       2.spring 支持用户自定义的切面  面向切面编程(aop)是对面向对象编程(oop)的补充,
      面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个 切面。

      AOP 从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop 是静态的抽象,aop 是动态的抽象,  是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。


    7、为什么要用spring:  
    AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。  IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用 其协作对象构造的。因此是由容器管理协作对象(collaborator)。  
    Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。
      aop 框架具有的两个特征:  1.各个步骤之间的良好隔离性  2.源代码无关性


    8、Spring框架支持如下五种不同的作用域: 
    singleton:在Spring IOC容器中仅存在一个Bean实例,Bean以单实例的方式存在。 
    prototype:一个bean可以定义多个实例。 
    request:每次HTTP请求都会创建一个新的Bean。该作用域仅适用于WebApplicationContext环境。 
    session:一个HTTP Session定义一个Bean。该作用域仅适用于WebApplicationContext环境. 
    globalSession:同一个全局HTTP Session定义一个Bean。该作用域同样仅适用于WebApplicationContext环境. bean默认的scope属性是’singleton‘。


    26.Spring框架中单例beans是线程安全的吗? 

    不是,Spring框架中的单例beans不是线程安全的。




  • 相关阅读:
    stdin和STDIN_FILENO的区别
    运算放大器和仪表放大器有哪些区别?
    仪表放大器与运算放大器的区别是什么?
    如何将库文件移到另一个库
    altium designer 中器件原理图库中,将一个器件分成几部分是如何操作的?就是如何用part表示?
    linux串口基本编程
    WCF寄宿(Host)之自我寄宿(Self-Hosting)简单实例【Windows应用程序宿主】
    WCF寄宿(Host)之自我寄宿(Self-Hosting)简单实例【Console应用为宿主】
    GUI创建各常用控件(二)
    GUI创建各常用控件(一)
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276453.html
Copyright © 2011-2022 走看看