`

spring面试题收集

阅读更多
1.spring框架的优点有哪些?

Spring

   1. Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分
   2. Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高
   3. 依赖注入和IoC使得JDBC操作简单化
   4. Spring是开源的免费的
   5. Spring使得对象管理集中化合简单化

2.简述你对IoC(Inversion of Control)的理解。

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

控制反转(IoC/Inverse Of Control):   调用者不再创建被调用者的实例,由spring框架实现(容器创建)所以称为控制反转。

依赖注入(DI/Dependence injection) :   容器创建好实例后再注入调用者称为依赖注入。


3.Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法。

        在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。在使用中如果遇到OpenSessionInView的问题,可以添加 OpenSessionInViewFilter或OpenSessionInViewInterceptor。

4.如何在web应用里面配置spring?

在J2EE的web应用里面配置spring非常简单,最简单的只需要把spring得ContextLoaderListener添加到你的web.xml文件里面就可以了,示例如下:
<listener>
    <listener-class>
org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

5.Spring里面如何配置数据库驱动?

使用”org.springframework.jdbc.datasource.DriverManagerDataSource”数据源来配置数据库驱动。示例如下:
<bean id=”dataSource”>
    <property name=”driverClassName”>
        <value>org.hsqldb.jdbcDriver</value>
    </property>
    <property name=”url”>
        <value>jdbc:hsqldb:db/appfuse</value>
    </property>
    <property name=”username”><value>sa</value></property>
    <property name=”password”><value></value></property>
</bean>

6.Spring里面applicationContext.xml文件能不能改成其他文件名?

ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。缺省情况下, 它会在WEB-INF/applicationContext.xml文件找Spring的配置。 你可以通过定义一个<context-param>元素名字为”contextConfigLocation”来改变Spring配置文件的位置。示例如下:
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/xyz.xml</param-value>
    </context-param>

    </listener-class>
</listener>

7.两种依赖注入的类型都是什么?

两种依赖注入的类型分别是setter注入和构造方法注入。

setter注入: 一般情况下所有的java bean, 我们都会使用setter方法和getter方法去设置和获取属性的值,示例如下:
public class namebean {
     String      name; 
     public void setName(String a) {
        name = a; }
     public String getName() {
        return name; }
    }
我们会创建一个bean的实例然后设置属性的值,spring的配置文件如下:
<bean id=”bean1″  >
   <property   name=”name” >
       <value>tom</value>
   </property>
</bean>
Spring会调用setName方法来只是name熟悉为tom
构造方法注入:构造方法注入中,我们使用带参数的构造方法如下:
public class namebean {
     String name;
     public namebean(String a) {
        name = a;
     }  
}
我们会在创建bean实例的时候以new namebean(”tom”)的方式来设置name属性, Spring配置文件如下:
<bean id=”bean1″ >
    <constructor-arg>
       <value>My Bean Value</value>
   </constructor-arg>
</bean>
使用constructor-arg标签来设置构造方法的参数。

8.如何在web环境中配置applicationContext.xml文件?

<listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
</listener>
或:
<servlet>
  <servlet-name>context</servlet-name>
   <servlet-class>
    org.springframework.web.context.ContextLoaderServlet
   </servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
通过如下方法取出applicationContext实例:
ApplicationContext ac=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext);

9.spring中的核心类有那些,各有什么作用?

BeanFactory:产生一个新的实例,可以实现单例模式
BeanWrapper:提供统一的get及set方法
ApplicationContext:提供框架的实现,包括BeanFactory的所有功能

10.Spring如何创建一个数据连接池

<bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource”>
<property name=”driver”>
<value>${db.driver}</value>
</property>
<property name=”url”>
<value>${db.url}</value>
</property>
<property name=”username”>
<value>${db.username}</value>
</property>
<property name=”password”>
<value>${db.password}</value>
</property>
</bean>

11.Spring框架有哪几部分组成?

Spring框架有七个模块组成组成,这7个模块(或组件)均可以单独存在,也可以与其它一个或多个模块联合使用,主要功能表现如下:

☞ Spring 核心容器(Core):提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。

☞ Spring AOP:通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。

☞ Spring ORM:Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。

☞ Spring DAO:JDBC DAO抽象层提供了有意义的异常层次的结构,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低 了需要编写的异常代码数量(例如,打开和关系连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层结构。

☞ Spring WEB:Web上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。

☞ Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。

☞ Spring MVC:Spring的MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol



12.Spring面试:什么是Spring, 它有什么特点

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并 且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦 合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不 是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的 业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们 并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是 一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生 成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
分享到:
评论

相关推荐

    Spring面试题合集

    Spring面试题合集涵盖了Spring框架的核心概念、重要特性以及常见的面试问题。以下是对这些知识点的详细阐述: 1. **IoC(控制反转)与DI(依赖注入)**: - IoC是指应用程序的控制权由传统模式中的对象自己控制...

    最全的IT公司面试题集 CHM版的

    数据库面试题,英语面试,外企面试,软件测试面试题,Python面试题,Oracle面试题,MySql面试题,Web开发面试题,Unix面试题,程序员面试,网络技术面试题,网络安全面试题,Linux面试题,Hibernate面试题,Spring面试题,SQL ...

    java面试题收集集锦

    Java面试题集锦涵盖了广泛的Java基础知识,JSP与Servlet技术,J2EE相关知识以及其他一些IT领域的要点。以下是对这些知识点的详细说明: 1. **Java基础** - Java有八种基本数据类型:byte, short, int, long, float...

    Java面试题、JVM面试题、多线程面试题、并发编程、设计模式面试题

    Java面试题、JVM面试题、多线程面试题、并发编程、设计模式面试题、SpringBoot面试题、SpringCloud面试题、MyBatis面试题、Mysql面试题、VUE面试题、算法面试题、运维面试题。 收集汇总各行业笔试or编程题解题思路 ...

    BIO,NIO,AIO,Netty面试题 35道.pdfJava并发编程最全面试题 123道.pdfJava并发编程面试题

    BIO,NIO,AIO,Netty面试题 35道.pdf Java并发编程最全面试题 123道.pdf ...Spring面试题(含答案).pdf 多线程面试59题(含答案).pdf 面试题集(全).pdf 设计模式面试题 14道.pdf Spring面试题 75道.pdf 等等

    java面试题收集(西安面试题,面试指导,sql面试题)

    Java面试题是每个Java开发者在求职过程中必须面对的挑战,尤其在西安这样的技术密集型城市,竞争尤为激烈。本资料集包含了丰富的Java面试题、西安地区常见面试问题以及SQL相关题目,旨在帮助求职者全面准备,顺利...

    J2EE面试题收集(三大框架)

    **J2EE面试题收集(三大框架)** 在Java企业级开发中,三大框架——Struts、Hibernate和Spring——占据着核心地位。这些框架分别解决了Web应用中的展示层、持久层和业务逻辑层的问题,形成了高效且易于维护的开发模式...

    微服务、dubbo、SpringCloud全部面试题-带答案解析.doc

    《微服务、Dubbo、SpringCloud面试精要》 在当今的互联网开发中,微服务架构已经成为主流,而Dubbo和SpringCloud则是实现这一架构的关键技术。本文将深入解析Dubbo的一些核心概念和面试常见问题,帮助你更好地理解...

    大数据面试宝典包含java基础和spring面试题

    ### 大数据面试宝典知识点解析 #### 一、Java基础知识点详解 ...综上所述,本面试宝典涵盖了Java基础知识、Spring框架、大数据技术及其相关项目实践经验等多个方面,旨在帮助面试者全面掌握所需技能,顺利通过面试。

    程序员热门面试题及详细解析Spring篇(1)

    程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...

    2018最新最全java高级工程师面试题

    2018年最全的Java高级工程师面试题集锦,包含了十几个文档,可以预见这些文档将涵盖JVM原理、并发编程、设计模式、数据结构与算法、Spring框架、数据库设计与优化、网络协议等多个领域。 1. **JVM(Java虚拟机)** ...

    详细整理Java面试题,面试题及完整答案.zip

    Java作为一门广泛应用于企业级开发的编程语言,其面试题涵盖了多方面的知识,包括但不限于基础知识、数据结构与算法、并发编程、JVM内存管理、框架原理等。这份"详细整理Java面试题,面试题及完整答案.zip"压缩包...

    程序员热门面试题及详细解析SpringCloud篇(1)

    程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...

    SpringCloud相关面试题.pdf

    ### Spring Cloud 基础与概念 1. **Spring Cloud 的定义**: - **定义**:Spring Cloud 是...以上是 Spring Cloud 相关面试题中涉及的基础概念和技术组件的详细解释,有助于理解 Spring Cloud 的核心理念和技术细节。

    JavaWeb全栈面试题

    JavaWeb全栈面试题涵盖了Java基础、Web开发、数据库、服务器、线程管理、内存分布、前端技术等多个关键领域,是全面评估一个开发者综合技能的重要参考。以下将针对这些知识点进行详细阐述: 1. **Java基础**:Java...

    2024年Java高工面试题 2024年Java高工面试题 2024年Java高工面试题

    以上知识点涵盖了JVM的基本概念、垃圾回收策略、Spring框架的初始化流程及事务管理、以及一些常见的数据结构和分布式服务框架的基础知识,对于准备Java高级工程师面试的开发者来说是非常重要的复习内容。

    java 面试题大全 各大公司面试题总汇

    这份"java面试题大全"集合了各大公司的面试题目,对于准备Java开发者面试的求职者来说是一份宝贵的资源。下面,我们将深入探讨Java面试中常见的知识点,以及如何通过这些题目来提升自己的技能。 1. **基础语法**:...

    Java面试题笔试题大全

    Java作为全球最流行的编程语言之一,其面试题和笔试题是评估开发者技能的重要标准。这份“Java面试题笔试题大全”资源旨在帮助求职者全面准备Java相关的技术面试和笔试环节,提升成功几率。CHM(Compiled Help ...

    高级Java经典面试题2019

    本文总结了《高级Java经典面试题2019》中关于并发编程、JVM和Spring框架等方面的重要知识点。通过深入理解这些概念和技术,可以帮助开发者更好地掌握Java核心技术,提高面试竞争力。希望本文能为读者提供有益的帮助...

    SpringCloud组件面试题目_SpringCloud组件面试_springcloud_

    在准备SpringCloud组件面试时,理解并掌握各个关键组件的功能和使用是至关重要的。SpringCloud作为微服务架构的主流框架,包含了许多子项目,每个子项目都有其独特的用途。以下是一些可能在面试中出现的知识点,涵盖...

Global site tag (gtag.js) - Google Analytics