1. Spring工作机制及为什么要用?
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。Spring既是一个AOP框架,也是一IOC容器。
SpringFramework的组成:Spring AOP,Spring DAO,Spring ORM,Spring Web,Spring Context, Spring Web MVC。
Spring的核心就是IOC和AOP,所以Spring的工作机制简单的理解也就是IOC和AOP的工作机制。
借助于Spring AOP,Spring IoC能够很方便的使用到非常健壮、灵活的企业级服务,通过使用IoC能够降低组件之间的耦合度,最终,能够提高类的重用性,利于测试,而且更利于整个产品或系统集成和配置。
2. 说说AOP和IOC的概念以及在spring中是如何应用的?
AOP,Aspect Oriented Program,面向(方面)切面的编程;
IOC,Invert Of Control,控制反转。
简单说一下,IOC就是其实就是依赖注入,即用接口编程,在程序中不出现new关键字,而是用接口来命名引用,然后通过某种方式把接口的某个实现类的实例注入到引用里,从而实现接口与具体实现类的松耦合。
由容器控制程序之间的关系(通过XML配置),而非传统实现中的由程序代码直接操控,(在一个Class对象中引用另一个Class对象时,我们通常都是直接通过new contructor)。控制权由应用代码中转到了外部容器,控制权的转移,是所谓的反转。
AOP方式很类似filter,就是在程序正常的业务流中间像切面一样插入很多其他需要执行的代码,比如登录时候,在进入登录页面前写入日志,很常用的,尤其是跟数据库有关的,或者跟支付有关的程序肯定会在每一步前面插入日志。
面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
AOP Advice(AOP通知)分为:
前置通知
后置通知
异常通知
环绕通知
3. Spring的事物有几种方式?谈谈spring事物的隔离级别和传播行为?
声明式事务 使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。
事务的隔离级别:
数据库系统提供了4种事务隔离级别,在这4种隔离级别中,Serializable的隔离级别最高,Read Uncommitted的隔离级别最低;
· Read Uncommitted 读未提交数据;(会出现脏读)
· Read Committed 读已提交数据;
· Repeatable Read 可重复读;
· Serializable 串行化
事务的传播属性包括:
· Required 业务方法需要在一个事务中运行,如果一个方法运行时已经处在一个事务中,那么加入到该事务,否则为自己创建一个新事务,80%的方法用到该传播属性;
· Not-Supported
· Requiresnew
· Mandatoky
· Supports
· Never
· Nested
4. Spring的优点和缺点?
⑴Spring的优点:
① Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB;
② Spring能消除在许多工程中常见的对Singleton的过多使用。(因为它降低了系统的可测试性和面向对象的程度);
③ 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。Inversion of Control的使用帮助完成了这种简化;
④ 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯;
⑤ Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring;
⑥ 使用Spring构建的应用程序易于单元测试;
⑦ Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码;
⑧ Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,他们适用于许多web应用。例如:Spring能使用AOP提供声明性事务管理而不通过EJB容器;
⑨ Spring为数据存取提供了一个一致的框架不论使用的是JDBC还是O/R mapping产品;
⑵Spring的缺点:
① 使用人数不多,jsp中要写很多代码;
② 控制器过于灵活,缺少一个公用控制器。
相关推荐
这篇文档“25个经典的Spring面试问题包含答案”旨在帮助求职者和开发者更好地理解Spring的核心概念和实际应用。以下是对这些问题的详细解读: 1. **什么是Spring框架?** Spring是一个开源的Java平台,它为构建...
本文将深入探讨Spring框架的常见面试问题,包括其核心概念、优点、IOC(控制反转)和AOP(面向切面编程)的理解,以及它们在实际应用中的作用。 首先,Spring是一个提供IOC和AOP的轻量级容器框架。IOC,即控制反转...
文档的描述部分提到,这些面试问题是为了帮助读者熟悉可能在面试中遇到的问题类型,而问题通常会从一些基础概念开始,然后根据回答者给出的答案继续深入。这意味着在实际的面试中,候选人需要对Spring框架的基础和...
Spring 常见面试题 Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。Spring框架的目标是使得Java EE应用程序的开发更加简捷...
Spring常见面试题总结
Spring中常见的实现有`DataSourceTransactionManager`,适用于基于JDBC的数据源。 - **TransactionTemplate**:提供了事务操作的模板方法,可以简化事务操作的代码编写。 - **TransactionProxyFactoryBean**:通过...
在面试中,理解并能熟练解释Spring的这些关键概念是非常重要的。 1. **依赖注入(DI)** 依赖注入是Spring的核心,它允许组件之间的耦合度降低,提高了代码的可测试性和可维护性。DI通过容器管理对象的生命周期和...
spring常见面试题.md
Spring和SpringMVC面试问题总结 1.Spring中AOP的应用场景、Aop原理、好处? 2.Spring中IOC的作用与原理?对象创建的过程。 3.介绍spring框架 4.Spring常见创建对象的注解? 5.Spring中用到的设计模式 6.Spring的优点...
JDBC 抽象和 DAO 模块保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层。 对象/关系映射集成模块支持我们在直接 JDBC 之上使用一个...
总结这些面试题,我们可以看出Spring的核心特性包括依赖注入、面向切面编程、与其他框架的集成能力以及事务管理。掌握这些知识点对于Java开发人员来说至关重要,能够提升技术水平并在面试中展现出专业素养。
BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试题 47道 ElasticSearch面试题 30道 Git常用命令面试题 60道 Java并发编程最全面试题 123道 Kafka知识汇总 18道 Linux面试题 50道 Memcache 面试题 23道 ...
Spring Boot的出现是为了应对Spring项目日益复杂的构建和配置问题。在传统的Spring项目中,开发者需要手动添加构建路径、Maven依赖以及配置应用程序服务器。然而,Spring Boot在现有Spring框架的基础上构建,通过...
Spring框架是Java开发中不可或缺的一部分,它以其轻量级、高度模块化的设计赢得了广大开发者的心。...深入理解并熟练掌握Spring,对于Java开发者来说至关重要,无论是面试还是实际开发工作,都能从中受益匪浅。
面试中常见的Spring问题涉及到这些模块及其概念,例如: - **Spring Bean的生命周期**:从初始化、使用到销毁的过程,包括Bean的构造、初始化方法调用、属性设置、后处理器调用、销毁方法等阶段。 - **自动装配**:...
Spring 框架常见面试题与答案,IOC AOP 等 Spring 框架是 Java 企业级应用开发中的一种流行的框架,提供了一个强大且灵活的开发平台。下面是 Spring 框架中的一些常见面试题与答案: 1. 使用 Spring 框架的好处是...
下面,我们将详细探讨这些框架的核心知识点和常见面试问题。 1. **Spring框架**: - **IoC(Inversion of Control)**:Spring通过IoC容器管理对象的生命周期和依赖关系,降低了组件之间的耦合。 - **AOP(Aspect...
Spring最新面试题,常见面试题及答案汇总