1.为什么要使用spring框架?

spring是一个开源的轻量级JavaBean容器框架。使用JavaBean代替EJB,并提供了丰富的企业应用功能,降低应用开发的复杂性.
轻量:非入侵性的,所依赖的东西少、资源占用少、部署简单,不同功能选择不同的jar组合;
容器:工厂模式实现对JavaBean进行管理,通过控制反转(IOC)将应用程序的配置和依赖性与应用代码分开;
松耦合:通过XML配置或注解即可完成bean的依赖注入;
AOP:通过XML配置或注解即可加入面向切面编程的能力,完成切面功能,如日志,事务…的统一处理;
方便集成:通过配置和简单的对象注入即可集成其他框架,如Mybatis、Hibernate、Shiro…
丰富的功能:JDBC层抽象,事务管理,MCV,Java Mail,任务调度,JMX,JMS,JNDI,EJB,动态语言,远程访问,Web Service;

2.什么是AOP?

AOP:Aspect Oriented Programming,面向切面编程,用于处理系统中分布的各个模块的横切关注点,比如事务管理,日志缓存等,通过预编译和运行期动态代理实现程序功能的统一维护。
在Spring框架中,AOP是一个很重要的功能。AOP利用一种称为横切的技术,剖开对象的封装,并将影响多个类的公共行为封装到一个可重用模块,组成一个切面,即Aspect。
切面:就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,利于可操作性和可维护性;
实现AOP方式主要有两大类:
1.JDK动态代理,采用动态代理技术,利用拦截方法的方式,对该方法进行粉饰,以取代原有对象行为的执行。JDK动态代理通过反射来接收被代理的类,但是被代理的类必须实现接口。
2.cglib动态代理,采用静态织入的方式,引入特定的语法创建‘切面’,从而使得编译器可以在编译期间织入有关‘切面’的代码。cglib动态代理的类一般是没有实现接口的类,cglib是一个代码生成的类库,所以cglib是通过继承的方式做的动态代理。

3.什么是IOC?

IOC:Inversion of Control(控制反转).是一种设计思想,在Java开发中,将设计好的对象交给容器控制,从而不是显式地用代码进行对象的创建。
把创建和查找依赖对象的控制权交给IOC容器,由IOC容器进行控制,如,组合对象。这样对象与对象之间是松耦合、便于测试,功能可复用(减少对象的创建和内存消耗),使得程序的整个体系结构可维护、灵活性、扩展性变高。
IOC的好处:1.资源集中管理,实现资源的可配置和易管理;2.降低了资源的依赖程度,即松耦合;3.便于测试;4.功能可复用(减少对象的创建和内存消耗);5.使得程序的整个体系结构可维护、灵活性、扩展性变高;
DI:Dependency Injection,依赖注入,是IOC容器装配,注入对象的另一种方式,通过依赖注入机制,简单的配置即可注入需要的资源,完成自身的业务逻辑,不需要关系资源的出处和具体实现;

IOC原理:实现的基础是工厂模式和动态代理,通过反射将配置好的工厂生成所需要的子类,然后交给容器去进行控制。

Spring提供了三种主要方式来配置IOC容器中的bean
1.基于XML文件配置;2.基于注解配置;3.基于注解 + java代码显式配置;

4.Spring有哪些主要模块?

Spring框架的七大模块:
1.Spring Core:框架的最基础部分,提供IOC容器,对bean进行管理
2.Spring Context:基于bean,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化、校验和调度等功能
3.Spring Dao:提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库产商特有的错误代码,还提供了声明性事务管理
4.Spring ORM:提供了常用的“对象/关系”映射API的集成层。其中包括JPA,JDP,Hibernate,Mybatis
5.Spring AOP:提供了符合AOP Alliance规范的面向方面的编程实现
6.Spring Web:提供了基础的Web开发的上下文信息,可与其他Web进行集成
7.Spring Web MVC:提供了Web应用的Model-View-Controller全功能实现

5.Spring常用的注入方式有哪些?

1.xml中配置
1.bean的申明、注册:

<bean>节点注册bean
<bean>节点的factory-bean参数指定工程bean,factory-method参数指定工厂方法

2.bean的注入:

<property>节点使用set方式注入
<constructor-arg>节点使用    构造方法注入

2.注解
1.bean的申明、注册:
@Component //注册所有bean
@Controller //注册控制层的bean
@Service //注册服务层的bean
@Respository //注册dao层的bean
2.bean的注入
@Autowired 作用于构造方法,字段,方法,常用于成员变量字段之上
@Autowired+@Qualifier 注入,指定bean的名称
@Resource JDK 自带注解注入,可以指定bean的名称和类型等

6.Spring中的bean是线程安全的吗?

Spring不保证bean的线程安全
默认Spring容器中的bean是单例的。当单例中存在静态条件,即有线程安全问题
Spring管理的bean的线程安全跟bean的创建作用域和bean所在使用环境是否存在静态条件有关,Spring不能保证bean的线程安全

7.Spring支持几种bean的作用域?

1.singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的bean只有一个实例
2.prototype:原型模式,每次通过容器的getbean方法获取prototype定义的bean时,都产生一个新的bean实例
只有在Web应用中使用Spring时,request、session、global-session作用域才有效
request:对于每次http请求,使用request定义的bean都将产生一个新实例,即每次http请求将会产生不同的bean实例
session:同一个Session共享一个bean实例
global-session:同session作用域不同的是,所有的Session共享一个Bean实例

8.Spring自动装配bean有哪些方式?

spring配置文件中节点的autowire参数可以控制bean自动装配方式:
1.default:默认的方式和‘no’方式一样 2.no:不自动装配,需要使用节点或参数(使用ref参数注入bean,必须要有对象的setter方法)
3.byName:根据名称进行装配 (也需要相应的setter方法才能注入) 4.byType:根据类型进行装配(也需要相应的setter方法才能注入)
5.constructor:根据构造函数进行装配(无需setter方法,需通过构造方法去注入bean)

9.Spring事务实现方式有哪些

1.编程式事务管理,在代码中调用commit()、rollback()等事务管理相关的方法
2.基于TransactionProxyFactoryBean 的声明式事务管理
3.基于注解@Transactional 的声明式事务管理

10.介绍一下spring mvc

spring mvc是spring web mvc,spring框架的一部分,一个mvc设计模型的表现框架

11.spring mvc运行流程

1.在web项目的web.xml文件配置DispatcherServlet,启动web项目完成初始化动作
2.http请求到DispatcherServlet
3.根据HTTPServletRequest查找HadnlerExecutionChain
4.根据HandlerExecutionChain获取HandlerAdapter、执行handler
5.Handler执行完成返回ModelAndView
6.DispatcherServlet进行结合异常处理ModelAndView
7.DispatcherServlet进行视图渲染,将Model数据在View中填充
8.DispatcherServlet返回结果

12.spring mvc有哪些组件?

1.前端控制器 (DispatcherServlet) 2.处理器映射器(HandlerMapping) 3.处理器适配器(HandlerAdapter)
4.拦截器(HandlerInterceptor) 5.语言环境处理器(LocaleResolver) 6.主题解析器(ThemeResolver)
7.视图解析器(ViewResolver) 8.文件上传处理器(MultipartResolver) 9.异常处理器(HandlerExceptionResolver)
10.数据转换(DataBinder) 11.消息转换器(HttpMessageConverter) 12.请求视图翻译器(RequestToViewNameTranslator)
13.页面跳转参数管理器(FlashMapManager) 14.处理程序执行链(HandlerExecutionChain)S

13.@RequestMapping的作用是什么?

@RequestMapping是一个注解,用来表示http请求地址与Controller类的方法之间的映射

14.@Autowired的作用是什么?

@Autowired是一个注释,它可以对类成员变量】方法及构造函数进行标注,让spring完成bean自动装配的工作
@Autowired默认是按照类去匹配,配合
@Qualifier指定按照名称去装配bean

15.什么是spring boot?为什么要使用?

spring boot基于spring框架的快速开发整合包
好处:编码变得简单,配置变得简单,部署变得简单,监控变得简单

16.spring boot核心配置文件是什么?

Spring Boot有两种类型的配置文件,application和bootstrap文件
Spring Boot会自动加载classpath目前下的这两个文件,文件格式为properties或yml格式
*.properties文件是 key=value的形式
*.yml是key:value的形式
*.yml加载的属性时有顺序的,但不支持@PropertySource注解来导入配置,一般推荐用yml文件,看下来更加形象。
bootstrap配置文件是系统级别的,用来加载外部配置,如配置中心的配置信息,也可以用来定义系统不会变化的属性.bootstrap文件的加载优先于application文件。
application配置文件是应用级别的,是当前应用的配置文件

17.spring boot有哪些方式可以实现热部署?

1.pring Loader
2.spring-boot-devtools
3.JRebel插件

18.你如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念?

Joinpoint(连接点): 类里面可以被增强的方法,这些方法称为连接点;Pointcut(切点):指我们要对哪些Joinpoint进行拦截的定义;
Advice(通知/增强):是指拦截到Joinpoint之后所要做的事情就是通知,通知分为前置通知和后置通知等(切面要完成的功能);
Aspect(切面): 是切入点和通知(引介)的结合Introduction(引介):一种特殊的通知在不修改类代码的前提下,可以在运行期为类动态地添加一些方法;
Weaving(织入):是把增强应用到目标的过程,把advice 应用到 target的过程;

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐