首页 > 编程语言 >java面试题_简单说明hibernate、Struts2、Spring、springMVC、mybatis的执行流程或者原理_3_Spring

java面试题_简单说明hibernate、Struts2、Spring、springMVC、mybatis的执行流程或者原理_3_Spring

时间:2023-02-20 13:01:37浏览次数:45  
标签:面试题 hibernate Java 框架 对象 Spring 编程 AOP


系列文章目录

文章目录

  • ​​系列文章目录​​
  • ​​spring面试题​​
  • ​​1、简单介绍一下Spring?​​
  • ​​2、面向切面编程是啥意思​​
  • ​​3、介绍一下对Spring IoC的理解​​
  • ​​4、谈一下@Autowired 和@Resource区别是什么?​​
  • ​​5、介绍Spring中常见注解及解释​​
  • ​​6、Spring框架中用到了哪些设计模式​​
  • ​​Spring 事务实现方式​​
  • ​​spring的原理是什么?​​
  • ​​总结​​

spring面试题

1、简单介绍一下Spring?

Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置
主要由以下几个模块组成(可参考jar包):
Spring Core:核心类库,提供IOC服务;
Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
Spring AOP:AOP服务;
Spring DAO:对JDBC的抽象,简化了数据访问异常的处理;
Spring ORM:对现有的ORM框架的支持;
Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传;
Spring MVC:提供面向Web应用的Model-View-Controller实现

2、面向切面编程是啥意思

AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程
AOP其实只是OOP的补充而已
AOP在编程历史上可以说是里程碑式的,对OOP(面向对象)编程是一种十分有益的补充

3、介绍一下对Spring IoC的理解

IoC不是什么技术,而是一种设计思想。在java的开发过程中。ioc意味着将你设计好的对象交给容器控制,而不是传统的在对象内部直接控制。理解“谁控制谁,控制什么

为何是反转,哪些反转了:有反转就有正转,传统的应用程序是由我们在对象中主动控制去直接获取依赖对象,也就是正转;反转就是由容器帮我们创建以及注入依赖对象;为何是反转,因为是由容器帮我们查找及注入对象,对象只是被动的接受;

IOC是一种设计思想(思想的转变),之前所有创建对象的操作是由程序员自己new,现在交给了spring,由spring帮我们创建对象,注入之类的。控制反转,控制是指 ioc提供的容器控制类的对象,反转是指转交给spring来负责。最大的作用就是解耦(降低耦合性)

IOC是一种叫做“控制反转”的设计思想

4、谈一下@Autowired 和@Resource区别是什么?

1、共同点
两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法
2、不同点
(1)@Autowired
@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。
(2)@Resource
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略

5、介绍Spring中常见注解及解释

@Component:是一个标识类是IOC容器的一个组件确保被扫描器识别,注入进来
@Repossitory:声明dao层
@Lazy(value=true) :延迟加载
@Configuration:起到配置定义的作用,细节就是@Bean创建了JavaBean的细节信息
@ComponentScan(basePackages=""):扫包,也可以进行类扫描
@Scope(scopeName=“singleton”):单例
@Scope(scopeName=“prototype”):多例
@Service:声明业务类
@Autowrite:反射注入,如果找不到符合的JavaBean对象时,控制台会出现NoSuchBeanDefinitionException
@Primary:当Spring不知道具体注入那个实现类对象,使用这个设置优先级
@Qualifier:给service主键设置一个别名,注入指定别名的主键,适用于1个接口多个实现类
@Resource官方:可以使用byName或byType形式进行注入
@ImportResource(value=“ac.xml”):在Java类中导入xml文件中的配置

6、Spring框架中用到了哪些设计模式

1.工厂设计模式:Spring使用工厂模式通过BeanFactory和ApplicationContext创建bean对象。

2.代理设计模式:Spring AOP功能的实现。

3.单例设计模式:Spring中的bean默认都是单例的。

4.模板方法模式:Spring中的jdbcTemplate、hibernateTemplate等以Template结尾的对数据库操作的类,它们就使用到了模板模式。

5.包装器设计模式:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。

6.观察者模式:Spring事件驱动模型就是观察者模式很经典的一个应用。

7.适配器模式:Spring AOP的增强或通知(Advice)使用到了适配器模式、Spring MVC中也是用到了适配器模式适配Controller。

Spring 事务实现方式

编程式事务管理:这意味着你可以通过编程的方式管理事务,这种方式带来了很大的灵活性,但很难维护。
声明式事务管理:这种方式意味着你可以将事务管理和业务代码分离。你只需要通过注解或者XML配置管理事务

spring的原理是什么?

**Spring工作原理

Spring 已经用过一段时间了,感觉Spring是个很不错的框架。内部最核心的就是IOC了,
动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射 ,反射其实就是在运行时动态的去创建、调用对
象,Spring就是在运行时,跟xml Spring的配置 文件来动态的创建对象,和调用对象里的方法的 。

Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。

Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明 管理的(Spring根据这些配置 内部通过反射去动态的组装对象)

要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。

Spring里用的最经典的一个设计模式就是:模板方法模式

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。**

目的
解决企业应用开发的复杂性

功能
使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

总结

一句话 什么是Spring
Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性
Spring框架的目标是使得Java EE应用程序的开发更加简捷,通过使用POJO为基础的编程模型促进良好的编程风格
(POJO即简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称)


标签:面试题,hibernate,Java,框架,对象,Spring,编程,AOP
From: https://blog.51cto.com/u_15800767/6068371

相关文章

  • sql面试题_SQl优化技巧_1、注意通配符中like的使用,百分号放后面_2、避免在where子句中
    系列文章目录作为程序员经常和数据库打交道的时候还是非常频繁的,掌握住一些Sql的优化技巧还是非常有必要的。下面列出一些常用的SQl优化技巧文章目录​​系列文章目录​​​......
  • Spring-Boot捕获处理异常并让事务回滚
    1.不捕获异常可以正常回滚@Transactional(rollbackFor=Exception.class)@OverridepublicbooleantestTransaction(){baseMapper.updateById(......
  • Spring Cloud笔记
    单体应用存在的问题随着业务的发展,开发变得越来越复杂。修改、新增某个功能,需要对整个系统进行测试、重新部署。一个模块出现问题,很可能导致整个系统崩溃。多个开发团......
  • 百度前端必会react面试题总结
    对React和Vue的理解,它们的异同相似之处:都将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库都有自己的构建工具,能让你得到一个根据最佳实践......
  • springboot ElasticsearchRepository date_histogram 聚合查询
    NativeSearchQueryBuildernsqb=newNativeSearchQueryBuilder();DateHistogramAggregationBuilderdhb=AggregationBuilders.dateHistog......
  • Spring Boot笔记
    SpringBootSpringBoot是一个快速开发框架,可以迅速搭建出一套基于Spring框架体系的应用,是SpringCloud的基础。SpringBoot开启了各种自动装配,从而简化代码的开发......
  • Spring笔记
    Spring框架两大核心机制(IoC、AOP)IoC(控制反转)/DI(依赖注入)AOP(面向切面编程)Spring是一个企业级开发框架,是软件设计层面的框架,优势在于可以将应用程序进行分层,开发者可......
  • Spring MVC笔记
    SpringMVCSpringMVC是目前主流的实现MVC设计模式的企业级开发框架,Spring框架的一个子模块,无需整合,开发起来更加便捷。什么是MVC设计模式?将应用程序分为Control......
  • springboot Elasticsearch 实体创建索引设置Date 类型字段失败
    springbootElasticsearch实体创建索引设置Date类型字段失败,需添加以下注解@Field(type=FieldType.Date,format=DateFormat.custom,patter......
  • Spring Boot 项目介绍
    SpringBoot项目介绍作为学习过Java的软件开发者,相信都知道Spring这一伟大的框架,它所拥有的强大功能之一就是可以集成各种开源软件。但随着互联网的高速发展,各种框架......