java面试题整理( 五 )


六十二.构造方法注入和设值注入有什么区别?

  1. 设值注入写法直观便于理解 , 使各种关系清晰明了 。
  2. 设值注入可以避免因复杂的依赖实例化时所造成的性能问题 。
  3. 设值注入的灵活性较强 。
  4. 构造方法注入可以决定依赖关系的注入顺序 , 有限依赖的优先注入 。
  5. 对于依赖关系无需变化的Bean , 构造方法注入使所有的依赖关系全部在构造器内设定 , 可避免后续代码对依赖关系的破坏 。
  6. 构造方法注入中只有组建的创建者才能改变组建的依赖关系 , 更符合高内聚原则 。
六十三.Spring 框架中有哪些不同类型的事件?
上下文更新事件(ContextRefreshedEvent):该事件会在ApplicationContext被初始化或者更新时发布 。 也可以在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发 。
上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件 。
上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件 。
上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件 。 容器被关闭时 , 其管理的所有单例Bean都被销毁 。
请求处理事件(RequestHandledEvent):在Web应用中 , 当一个http请求(request)结束触发该事件 。 六十四.FileSystemResource 和 ClassPathResource 有何区别?
ClassPathResource在环境变量中读取配置文件 , FileSystemResource在配置文件中读取配置文件 。
六十五.Spring 框架中都用到了哪些设计模式?
单例模式、工厂模式、模板方法、代理模式、观察者模式...
六十六.设计模式应用场景
组合模式:针对树形结构