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也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
分享到:
相关推荐
2020年总结的spring面试题,经典带答案哦,我收集了一些spring面试的问题,这些问题可能会在下一次技术面试中遇到。对于其他spring模块,我将单独分享面试问题和答案。 如果你能将在以前面试中碰到的,且你认为这些...
数据库面试题,英语面试,外企面试,软件测试面试题,Python面试题,Oracle面试题,MySql面试题,Web开发面试题,Unix面试题,程序员面试,网络技术面试题,网络安全面试题,Linux面试题,Hibernate面试题,Spring面试题,SQL ...
BIO,NIO,AIO,Netty面试题 35道.pdf Java并发编程最全面试题 123道.pdf ...Spring面试题(含答案).pdf 多线程面试59题(含答案).pdf 面试题集(全).pdf 设计模式面试题 14道.pdf Spring面试题 75道.pdf 等等
链路追踪组件包括Spring Cloud Sleuth和Zipkin,用于收集调用链路上的数据。 Spring Cloud还提供了一系列的子项目和工具,如Spring Cloud Bus(事件/消息总线)、Spring Cloud Security(基于springsecurity的安全...
spring面试经典题目,这是我去应聘和我同学收集的面试题。
Spring面试题目经典问答,Spring常见面试题汇总--本人收集了一些大家在面试时被经常问及的关于Spring框架问题,这些问题有可能在你面试时被问到,请大家参考。
这些是我收集的关于,Struts,Hibernate,Spring经典面试题收藏 ,以备不时之需
收集的struts+spring+hibernate面试题.doc
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
该资源是本人面试之前 搜集的一些面试题和资源 对于面试相当有帮助!! 不好意思!! 回去补充一些资源!!
收集的struts+spring+hibernate面试题借鉴.pdf
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
收集了最新的spring hibernate struts 最新面试题集,并对题目进行了详细解答。
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...
程序员找工作面试题大集锦,收集整理了包括Android、C#、Java、Dubbo、 Elasticsearch、HTML、HTTP、JavaScript、JVM、Kafka、Linux、Memcached、 MongoDB、MyBatis、MySQL、Netty、Nginx、Oracle、Python、RabbitMQ...