spring理解


1.springboot

1.1.springboot概述

Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手

1.2springboot 、springMVC和spring的区别?

  • springFrame:最重要的特征是依赖注入,所有的springmodules不是依赖注入就是IOC控制反转。当我们恰当的使用DI和IOC的时候,我们可以开发松耦合应用,松耦合应用的单元测试可以很容易的进行
  • springMvc:它提供了一种分离式的方法开发Web应用,通过运用像DispatcherServelet,MoudlAndView和ViewResolver等简单的概念,开发Web应用将会变得非常简单。
  • springBoot:spring和SpringMvc的缺点是需要配置大量的参数,springboot通过一个自动配置和启动的项目来解决这个问题,为了更快的构建产品就绪应用程序,springboot提供了一些非功能性特征
    ##1.3springboot的优点:
  • 1.容易上手,提升开发效率,为spring开发提供一个更快、更广泛的入门体验,
  • 2.开箱即用,远离繁琐的配置
  • 3.提供了一系列大型项目通用的非业务功能例如内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等
  • 4.没有代码生成,不需要xml配置
  • 5.避免大量的Maven导入和各种版本的冲突

1.3.为什么要用springBoot

  • 为了解困java开发中,繁多的配置、低下的开发效率,复杂的部署流程,和第三方技术集成难度大的问题
  • springboot使用“习惯由于配置”的理念让项目快速运行起来,使用springboot很容易创建一个独立运行的jar,内嵌servlet容器
  • springboot核心功能之二:内嵌servlet容器,可以内嵌tomcate,接天jetty,或者undertow,这样我们就可以不用war包形式不是项目
  • springboot核心弓之三:提供starter简化maven配置,spring提供了一系列starter pom来简化maven的依赖加载,当时用spring-boot-starter-web时,会自动加载所需要的依赖包
  • 自动配置spring springboot会根据在类路径的jar包,类,为jar包中的类自动配置bean,这样会极大的减少使用的配置,会根据启动类所在的目录,自动配置bean

1.4.什么是spring boot starter

启动器是一套方便的依赖没描述符,它可以放在自己的程序中,你可以一站式的获取你说需要的spring和相关技术,而不需要依赖描述符的通过示例代码和赋值粘贴的负载

1.5.springBoot是如何快速创建产品就绪应用程序的?

springboot致力于快速产品就绪应用程序,为此,它提供了一些譬如高缓存,日志记录,监控和嵌入式服务器等开箱即用的非功能性特征

1.6springboot的核心注解是哪个?主要由那几个注解组成?

启动类上面的注解是@springbootapplication,他也是springboot的核心注解,主要包含了一下三个注解

  • @EnableAutoConfiguration :打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
  • @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能
  • @ComponentScan:Spring组件扫描

1.7什么是javaConfig?

spring javaconfig 是spring社区的产品,它提供了配置springIOC容器的纯java方法,因此它有助于避免使用xml配置使用javaconfig的优点在于:

  • 面向对象的配置,由于配置被定义为javacofig中的类,因此用户可以充分利用java中的面向对象功能,一个配置类可以继承另一个,重写她的@Bean方法等
  • 减少或消除xml配置,基于依赖诸如原则的外化配置的好处已被证明,但是,许多开发人员不希望在xml和java之间来回切换,javaconfig为开发人员提供了一种纯java方法来配置与xml配置概念相似的spring容器,从技术角度来讲,只使用javaconfig配置类配置容器是可行的但是实际上很多人认为将javaconfig与xml混合匹配是理想的。
  • 类型安全和重构友好。javaconfig提供了一种类型安全的方法来配置spring容器,由于java5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找。

1.8.springboot自动配置原理是什么?

注解@EnableAutoConfiguration,@Configuration,@ConditionalOnClass就是自动配置的核心,
@EnableAutoConfiguration给容器导入META-INFO/spring.factories里定义的自动配置类筛选有效的自动配置类
每一个自动配置类结合对应的xxxProprtties.java读取配置文件进行自动配置功能

1.9如何理解springboot配置加载顺序?

在springboot里面可以使用以下几种方式来加载配置:

  • properties文件
  • YAML文件
  • 系统环境变量
  • 命令行参数
    …等等

1.10.如何实现springboot应用程序的安全性

为了实现springboot的安全性,我们使用spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigureAdapter并覆盖其方法

1.11比较以下spring security和shiro各自的优缺点?

由于springboot官方提供了大量的非常方便得开箱即用的starter,包括spring security的starter,使得在springboot中使用springsecurity更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是springboot项目,一般选择则springsecurity,当然这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有任何问题的,shiro和springsecurity相比,主要由如下的一些特点:

  • springsecurity是一个重量级的安全管理框架;shiro则是一个轻量级的安全管理框架
  • springsecurity概念复杂,配置繁琐;shiro概念简单、配置简单
  • springsecurity 功能强大;shiro功能简单

1.12springboot中如何解决跨域问题?

跨域可以在前段通过jsonp来解决,但是jsonp只可以发送get请求,无法发送其他类型的请求在restful风格的应用中,就显得非常鸡助,因此我们推荐在后端通过(凑人数,cross-origin resource sharing)来解决跨域问题,这种解决方案并非springboot特有的,在传统的ssm框架中就可以通过cors来解决跨域问题,只不过我们是在xml文件中配置cors,现在可以通过实现webMvcConfigurer接口重写addCorsMappings方法来解决跨域问题

1.13什么是csrf攻击?

csrf代表跨站请求伪造,这是一种攻击,迫使最终用户在当前通过身份验证的web应用程序上执行不需要的操作,crsf攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应

1.14springboot中的监视器是什么?

springboot actuator是spring启动框架中的重要功能之一,springboot监视器可以帮助您访问生产环境中正在运行的应用程序的当前状态,有几个指标必须在生产环境中进行检查和监控,即使一些外部程序可能正在使用这些服务来向相关人员触发警报消息,监视器模块公开了一组可直接作为http url访问的rest段点来检查状态。

1.15如何在springboot中禁用actuator端点的安全性?

默认情况下,所有敏感的http断电都是安全的,只有具有actuator角色的用户才能访问它们,安全性是使用标准的httpservletRequest.isUserInRole方法实施的,我们可以使用来禁用安全性,只有在执行机构端点在防火墙厚访问时,才建议禁用安全性

1.16我们如何见识所有springboot微服务?

springboo提供监视器端点以监控各个微服务的度量,这些端点对于获取有关应用程序的消息(如他们是否已启动)以及他们的组件(如数据库等)是否正常运行很有帮助,但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应用程序的知识点以了解其状态或健康状况。

1.17什么是websockets?

websocket是一种计算机通讯协议,通过单个TCP连接提供全双工通信信道。

  • websocket是双向的-使用websocket客户端或者服务器可以发起消息发送
  • websocket是全双工的-客户端和服务端通信是相互独立的
  • 单个TCP连接-初始化连接使用http,然后将此链接升级到基于套接字的连接,然后这个单一连接用于所有未来的通信
  • Light-与http相比,websocket消息数据交换要轻很多。

1.18什么是springData?

springdata是spring的一个子项目,用于简化数据库的访问,支持nosql和关系数据存储,其主要目标是使数据库的访问变得方便快捷,springdata具有如下特点:

  • springdata项目支持nosql存储:mongoDB,nEO4J,redis,hbase
  • springdata项目所支持的关系数据存储技术:jdbc,jpa
  • springdata jpa致力于减少数据访问层(DAO)的开发量,开发者唯一要做的,就是声明持久层的接口其他都交给springdatajpa来帮你完成!springdatajpa通过规范方法发的名字,根据负荷规范的名字来确定方法需要实现什么样的逻辑

1.19 微服务中如何实现session共享?

一般都是通过spring session+redis来实现session共享

1.20springboot如何实现热部署?

引入devtools依赖即可

2.Spring

2.1.spring概述

Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。
spring最根本的使命是解决企业级应用开发的复杂性,及简化java开发,
spring为企业级开发提供了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入和面向切面编程
为了降低java开发的复杂性,spring采取了一下四种关键策略:

  • 基于pojo的轻量级和最小入侵性编程;
  • 通过依赖注入和面向接口实现松耦合;
  • 基于切面和惯例进行声明式编程;
  • 通过切面和模板减少样板式代码;

2.2.spring框架的设计目标、设计理念、和核心是什么?

spring设计目标:spring为开发者提供一站式轻量级应用开发平台;
spring设计理念:在javaEE开发中支持pojo和Javabean开发方式,使应用面向接口开发,充分支持OO(面向对象)设计方法;spring通过Ioc容器实现对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给Ioc容器,实现解耦;
spring框架核心:ioc容器和aop模块,通过IOC容器管理破击对象以及他们之间耦合关系;
通过aop以动态非侵入式的方式增强服务;
ioc让相互协助的组件保持松散的耦合,而aop编程允许你把遍布于应用各层的功能分离出来形成可用的功能组件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值