最新整理的100道大厂高频spring面试题( 二 )

14、ApplicationContext有哪些常见实现?

  • FileSystemXmlApplicationContext容器从XML文件加载bean的定义 。 XML bean配置文件的完整路径必须提供给构造函数 。
  • ClassPathXmlApplicationContext容器也从XML文件加载bean的定义 。 这里 , 你需要正确设置classpath因为这个容器将在classpath里找bean配置 。
  • WebXmlApplicationContext容器从web应用程序中加载包含所有bean定义的XML文件 。
15、Bean Factory和ApplicationContext有什么区别?Application contexts提供一种方法处理文本消息 , 一个通常的做法是加载文件资源(比如镜像) , 它们可以向注册为监听器的bean发布事件 。 另外 , 在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作 , 可以在Application contexts中以声明的方式处理 。 Application contexts实现了MessageSource接口 , 该接口的实现以可插拔的方式提供获取本地化消息的方法 。
16、Spring框架的一些最佳实践是什么?可见 20 个Spring框架实践,
17、使用Spring框架的方式有哪些?可以这样使用Spring框架:
  • 用于编写web应用程序
  • 提供Restful服务
  • 保护你的web应用程序
  • 联通数据库
  • 处理长时间运行的作业
  • 处理你必须要用的外部资源和系统
  • 用于测试
  • 用于独立的java项目
  • 将应用程序转换为可执行文件
  • 将社交媒体集成到应用程序中
18、我们如何使用Spring创建restful web服务来返回JSON响应结果?只要Jackson2在classpath中 , SpringBoor程序中的任何Spring @RestController修饰的控制器默认都返回json格式结果 。
19、Spring vs Spring MVC vs Spring Boot?
  • Spring:Spring最重要的特性是依赖注入或控制反转 。
  • Spring MVC :是一个完全面向HTTP的MVC框架 , 由Spring框架管理并基于servlet 。
  • SpringBoot:是一个用于快速配置的应用框架 , 它提供现成的配置 , 以便构建Spring应用 。
20、一个Spring大概是什么样子?
  • 接口:定义了一些方法的接口 。
  • Bean类:它包含属性、setter和getter方法、其它方法等等 。
  • Spring AOP:提供关注横切面的功能 。
  • XML配置文件:包含类的信息以及如何配置它们 。
  • 客户程序:调用方法 。
B:依赖注入21、Spring的IOC容器是什么?Spring IOC负责创建对象 , 使用依赖注入(dependency injection , DI)管理它们 , 将对象集中起来 , 配置对象 , 管理对象的整个生命周期 。
22、IOC的好处有哪些?
  • IOC或依赖注入最小化应用程序代码量 。
  • 它使测试应用程序变得容易 , 因为单元测试中不需要单例或JNDI查找机制 。
  • 以最小的代价和最少的干扰来促进松耦合 。
  • IOC容器支持快速实例化和懒加载 。
23、Spirng中有多少种IOC容器?
  • BeanFactory:BeanFactory本质上只不过是高层级的工厂接口 , 它能够维护不同bean及其依赖项的注册表 。 BeanFactory使你能够读取bean定义并使用bean工厂调用它们 。
  • ApplicationContext:ApplicationContext是Spring应用程序中的核心接口 , 用于向应用程序提供配置信息 。 它在运行时是只读的 , 但如果需要并且应用支持的话 , 可以重新加载 。 许多类实现了ApplicationContext接口 , 允许多种配置项和应用类型 。
24、BeanFactory和ApplicationContext比较Application Context:
  • Bean实例化/装配
  • BeanPostProcessor自动注册
  • BeanFactoryPostProcessor自动注册
  • 方便的消息源访问(针对i18n)
  • ApplicationEvent发布
BeanFactory:
  • Bean实例化/装配
25、什么是Spring中的依赖注入?依赖注入是控制反转(IOC)的一个方面 , 是一个通用的概念 , 它有很多种表达的方式 。 这个概念意思你不创建你的对象 , 但描述他们应该如何创建 。 你不会在代码中直接将组件和服务耦合在一起 , 而是描述配置文件中的哪些组件需要哪些服务 。 然后由一个容器(IOC容器)负责将它们关联起来 。
26、紧耦合和松耦合有什么区别?紧耦合:
  • 紧密耦合是指类之间高度依赖 。
松耦合:
  • 松耦合是通过促进单一职责和关注点分离的设计来实现的 。
27、IOC(依赖注入)有哪些不同类型?