如何加入Spring到web框架中?
在web.xml中加入如下同容,在启动web服务器时加载/WEB-INF/applicationContext.xml中的内容。
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
通过如下类得到ApplicationContext实例
WebApplicationContextUtils.getWebApplicationContext
Spring如何实现资源管理?
使用
applicationContext.getResource(“classpath:文件名”):在src根目录下,在类路径下
applicationContext.getResource(“classpath:/chap01/文件名”): 以src根目录下的基准往下走。
applicationContext.getResource(“file:c:/a.properties”):在系统文件目录下。
Spring如何实现事件处理?
事件
Extends ApplicationEvent
监听器
Implements
ApplicationListener
事件源
Implements
ApplicationContextAware
在applicationContext.xml中配置事件源、监听器
先得到事件源,调用事件源的方法,通知监听器。
如何在spring中实现国际化?
Spring面试题专栏
在applicationContext.xml加载一个bean
<bean id=”messageSource” class=”org.springframework.context.support.ResourceBundleMessageSource”>
<property name=”basename”>
<value>message</value>
</property>
</bean>
在src目录下建多个properties文件
对于非英文的要用native2ascii -encoding gb2312 源 目转化文件相关内容
其命名格式是message_语言_国家。
页面中的中显示提示信息,键名取键值。
当给定国家,系统会自动加载对应的国家的properties信息。
通过applictionContext.getMessage(“键名”,”参数”,”区域”)取出相关的信息。
spring的配置的主要标签是什么?有什么作用?
<beans>
<bean id=”” class=”” init=”” destroy=”” singleton=””>
<property name=””>
<value></value>
</property>
<property name=””>
<ref local></ref>
</property>
</bean>
</beans>
spring的jdbc与传统的jdbc有什么区别,其核心类有那些?
Spring的jdbc:节省代码,不管连接(Connection),不管事务、不管异常、不管关闭(con.close() ps.close )
JdbcTemplate(dataSource):增、删、改、查
TransactionTemplate(transactionManager):进行事务处理
spring与ejb2.0的事务管理比较的优缺点?
Spring面试题专栏
测试:
Spring:pojo
Ejb:二个接口一个类,一堆配置文件
事务类型
Spring:jdbc jta hibernate
Ejb:jta
成本
Spring:普通容器(tomcat jboss)
Ejb:weblogic jboss
开发的周期:
Spring远比ejb快.
spring的jdbc与传统的jdbc有什么区别,其核心类有那些?
Spring的jdbc:节省代码,不管连接(Connection),不管事务、不管异常、不管关闭(con.close() ps.close )
JdbcTemplate(dataSource):增、删、改、查
TransactionTemplate(transactionManager):进行事务处理
在spring中如何配代码的事务管理?
Spring
Datasouce
transactionManager
userDao要注入
Datasouce
transactionManager
通过如下类实现
TransactionTemplate
JdbcTemplate
spring+hibernate的配置文件中的主要类有那些?如何配置?
在myeclipse中先加入spring环境再加入hibernate环境。
spring+hibernate的配置文件中的主要类有那些?如何配置?
dataSource
sessionFactory:hibernate.cfg.xml
transactionManager
userDao (extends HibernateDaoSupport)
sessionFactory
facade
proxy
sessionFactory
transactionManager
facade
如何在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);
如何配置spring+struts?
在struts-config.xml加入一个插件,通过它加载applicationContext.xml
在struts-config.xml修改action-mapping标记,具体action交给了DelegateActionProxy
通过DelegateActionProxy进入一spring的环境。
在spring的applicationContext.xml加入<bean name=”/login” class=”" singleton=”false”/>
解释一下Dependency injection(DI,依赖注入)和IOC(Inversion of control,控制反转)?
参考答案:依赖注入DI是一个程序设计模式和架构模型, 一些时候也称作控制反转,尽管在技术上来讲,依赖注入是一个IOC的特殊实现,依赖注入是指一个对象应用另外一个对象来提供一个特殊的能力,例如:把一个数据库连接已参数的形式传到一个对象的结构方法里面而不是在那个对象内部自行创建一个连接。控制反转和依赖注入的基本思想就是把类的依赖从类内部转化到外部以减少依赖
应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。
Spring里面如何定义hibernate mapping?
添加hibernate mapping 文件到web/WEB-INF目录下的applicationContext.xml文件里面。示例如下:
<property name=”mappingResources”>
<list>
<value>org/appfuse/model/User.hbm.xml</value>
</list>
</property>
两种依赖注入的类型都是什么?
两种依赖注入的类型分别是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标签来设置构造方法的参数。
如何在web应用里面配置spring?
在J2EE的web应用里面配置spring非常简单,最简单的只需要把spring得ContextLoaderListener添加到你的web.xml文件里面就可以了,示例如下:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
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>
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>
<!-- Google广告 Start-->
<script type="text/javascript"><!--
google_ad_client = "pub-5989676008194042";
/* 336x280, 创建于 09-10-22 */
google_ad_slot = "3419462182";
google_ad_width = 336;
google_ad_height = 280;
//-->
// --></script>
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script><script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script><script type="text/javascript"><!--
google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);
// --></script>
<!-- Google广告 End-->
spring提供了几个关于事务处理的类:
TransactionDefinition //事务属性定义
TranscationStatus
//代表了当前的事务,可以提交,回滚。
PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类。
一般事务定义步骤:
TransactionDefinition td = new TransactionDefinition();
TransactionStatus
ts = transactionManager.getTransaction(td);
try
{ //do
sth
transactionManager.commit(ts);
}
catch(Exception
e){transactionManager.rollback(ts);}
spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。
编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象.
void
add()
{
transactionTemplate.execute( new TransactionCallback(){
pulic
Object doInTransaction(TransactionStatus ts)
{ //do sth}
}
}
声明式:
使用TransactionProxyFactoryBean:
PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly
围绕Poxy的动态代理
能够自动的提交和回滚事务
org.springframework.transaction.interceptor.TransactionProxyFactoryBean
PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW–新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED–以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER–以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED–如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
简述你对IoC(Inversion of Control)的理解
一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C的实例,但这种方法显然两者的依赖(Dependency)太大了。而IoC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现C放入IoC的 容器(Container)中,通过一定的配置由容器(Container)来实现类A与接口B的实现C的关联。
Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法。
在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor。
描述一下Spring中实现DI(Dependency Injection)的几种方式
Spring面试题专栏
方式一:接口注入,在实际中得到了普遍应用,即使在IOC的概念尚未确立时,这样的方法也已经频繁出现在我们的代码中。
方式二:Type2 IoC: Setter injection对象创建之后,将被依赖对象通过set方法设置进去
方式三:Type3 IoC: Constructor injection对象创建时,被依赖对象以构造方法参数的方式注入
Spring的方式
分享到:
相关推荐
spring复习面试个人总结题集
springcloud复习面试个人总结题集
《典型JAVA程序题集》是一份综合性的学习资源,涵盖了Java编程语言的多个核心知识点,旨在帮助学习者提升编程技能和解决实际问题的能力。这份题集深入浅出地讲解了Java编程的基础概念、语法特性以及高级应用,是Java...
年Spring考试题集 1 这究竟是什么? 考试问题集是一系列编码练习,可帮助您为课堂考试做好准备。 它们应该被用作对您学习的赞美,而不是替代它们。 指导原则应该是,如果您能够成功完成这些 Java 程序,并且了解您...
1. **Java基础概念**:Java是一种跨平台的、面向对象的编程语言,由Sun Microsystems(后被Oracle收购)开发。它的特性包括自动垃圾回收、内存管理、强类型系统和丰富的类库。 2. **核心语法**:包括变量定义、数据...
1. **抽象**:在面向对象编程中,抽象是将复杂问题简化的一种方法,它关注于对象的主要功能,忽略不相关的细节。抽象可以体现在抽象类或接口中,允许创建通用的代码模板,供具体类实现或扩展。 2. **继承**:继承是...
1. **Java基础** - 类与对象:理解面向对象编程的基本概念,包括封装、继承和多态。 - 访问修饰符:public、private、protected和默认修饰符的使用场景。 - 构造器:了解构造器的作用和重载构造器的方法。 - ...
这个复习题集,"Java Web 复习题集(1-4).zip",显然是为了帮助学习者巩固和测试他们在Java Web编程方面的知识。下面将详细讨论相关知识点。 1. **Servlet与JSP**: - **Servlet**:Servlet是Java编程语言中用来...
1. **基础语法**:面试和笔试中,Java的基础语法是必考内容,包括变量、数据类型(如基本类型和引用类型)、运算符、流程控制(如if语句、for循环、while循环)以及异常处理等。 2. **面向对象**:Java是纯面向对象...
springboot复习面试各人总结题集
9. **Spring框架**:虽然Spring不是J2EE标准的一部分,但它是现代Java企业应用开发的主流框架,面试中很可能涵盖Spring的依赖注入、AOP(面向切面编程)、Spring MVC、Spring Boot等内容。 10. **设计模式**:面试...
【中创面试复试题集】是一份集合了中创公司面试和复试环节可能出现的重要知识点的资料,涵盖了数据库开发、Java开发、测试面试以及一些通用问题等多个领域。这份资料对于准备中创新一轮面试的求职者来说,无疑是一份...
1. 不定冠词(a, an)通常用于表示泛指,当提到一个不确定的人或物时。"a"用于辅音音素开头的单词前,"an"用于元音音素开头的单词前。例如: - 一只耳朵(an ear) - 一个演员(an actor) - 一只母鸡(a hen) ...
Java笔试题集是针对准备Java相关工作岗位面试的求职者们精心整理的一份资源。这份题集涵盖了广泛的Java编程知识,旨在帮助应聘者强化基础,提升解决问题的能力,为面试做好充分准备。以下是一些可能出现在题集中的...
标题“整理面试与笔度题集110221”暗示这可能是一个关于技术面试和笔试准备的资源集合,其中可能包含了各种编程题目、算法问题以及技术概念的解释。这个压缩包很可能是为了帮助求职者,特别是那些对IT行业,尤其是...
《Java程序员面试宝典+题集》是一份针对Java开发者准备面试的重要参考资料,它涵盖了Java编程语言的基础知识、进阶概念、设计模式、框架应用、并发处理、性能优化等多个方面,旨在帮助求职者全面理解并掌握Java技术...
【IT专业面试笔试题集】是一份集合了多种IT领域技术面试和笔试问题的资源,主要涵盖ASP、.NET、C、C++、Java以及软件测试和数据库等多个方面。这份资料不仅提供了问题,还附带了解答,对于求职者或者希望提升技能的...
Java面试精选题集,CoreJava部分 CoreJava 1 Jdbc 36 Jsp 45 Servlet 50 Hibernate 56 Struts1.x 64 Struts2 70 Spring 82 EJB 89 WebLogic 92 J2EE 93 UML与OOA/D 101 JavaScript 107 Ajax 120 Xml 123 ...
1. **基础语法**:无论是C、C++还是Java,对基本语法的理解和应用是基础。这可能涉及到变量、数据类型、运算符、流程控制(如if-else,switch-case,循环)以及函数的使用。 2. **内存管理**:在C和C++中,理解内存...