可以搜任何网站的浏览器,塘沽企业网站建设,网站备案费用,购物网站建设优缺点一、SpringBoot
#xff08;1#xff09;简介
SpringFramework#xff1a;最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。使用 DI 或者是 IOC 的时候#xff0c;可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。
Spring MVC1简介
SpringFramework最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。使用 DI 或者是 IOC 的时候可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。
Spring MVC提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServeletMoudlAndView 和 ViewResolver 等一些简单的概念开发 Web 应用将会变的非常简单。
SpringBootSpring 和 SpringMVC 的问题在于需要配置大量的参数通过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序Spring Boot 提供了一些非功能性特征。
2Spring Boot 主要优点 1、容易上手提升开发效率为 Spring 开发提供一个更快、更广泛的入门体验。 2、开箱即用远离繁琐的配置。 3、提供了一系列大型项目通用的非业务性功能例如内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。 4、没有代码生成也不需要XML配置。 5、避免大量的 Maven 导入和各种版本冲突。 二、注解
1Spring Boot 的核心注解
启动类上面的注解是SpringBootApplication它也是 Spring Boot 的核心注解主要组合包含了以下 3 个注解
SpringBootConfiguration组合了 Configuration 注解实现配置文件的功能。
EnableAutoConfiguration打开自动配置的功能也可以关闭某个自动配置的选项如关闭数据源自动配置功能SpringBootApplication(exclude{DataSourceAutoConfiguration.class})
ComponentScanSpring组件扫描。 2 三、配置
1 JavaConfig Spring JavaConfig 是 Spring 社区的产品它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。
使用 JavaConfig 的优点在于
1、面向对象的配置
2、减少或消除 XML 配置。
3、类型安全和重构友好
2Spring Boot 自动配置原理 注解 EnableAutoConfiguration, Configuration, ConditionalOnClass 就是自动配置的核心
EnableAutoConfiguration 给容器导入META-INF/spring.factories 里定义的自动配置类。
筛选有效的自动配置类。
每一个自动配置类结合对应的 xxxProperties.java 读取配置文件进行自动配置功能
3 Spring Boot 配置加载顺序 在 Spring Boot 里面可以使用以下几种方式来加载配置。
1properties文件
2YAML文件
3系统环境变量
4命令行参数
4 YAML YAML 是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比如果我们想要在配置文件中添加复杂的属性YAML 文件就更加结构化而且更少混淆。可以看出 YAML 具有分层配置数据。
1、YAML 优势
1配置有序在一些特殊的场景下配置有序很关键 2支持数组数组中的元素可以是基本数据类型也可以是对象 3简洁
2、YAML 缺点
不支持PropertySource 注解导入自定义的 YAML 配置。
5Spring Boot 使用 XML 配置 Spring Boot 推荐使用 Java 配置而非 XML 配置但是 Spring Boot 中也可以使用 XML 配置通过 ImportResource 注解可以引入一个 XML 配置。
6spring boot 核心配置文件 单纯做 Spring Boot 开发可能不太容易遇到 bootstrap.properties 配置文件但是在结合 Spring Cloud 时这个配置就会经常遇到了特别是在需要加载一些远程配置文件的时侯。
spring boot 核心的两个配置文件
bootstrap (. yml 或者 . properties)boostrap 由父 ApplicationContext 加载的比 applicaton 优先加载配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring Cloud Config 或者 Nacos 中会用到它。且 boostrap 里面的属性不能被覆盖 application (. yml 或者 . properties)由ApplicatonContext 加载用于 spring boot 项目的自动化配置。
7Spring Profiles Spring Profiles 允许用户根据配置文件devtestprod 等来注册 bean。
因此当应用程序在开发中运行时只有某些 bean 可以加载而在 PRODUCTION中某些其他 bean 可以加载。 四、安全
1Spring Boot 应用程序的安全性 为了实现 Spring Boot 的安全性我们使用 spring-boot-starter-security 依赖项并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter 并覆盖其方法。
2Spring Security 和 Shiro 的优缺点 由于 Spring Boot 官方提供了大量的非常方便的开箱即用的 Starter 包括 Spring Security 的 Starter 使得在 Spring Boot 中使用 Spring Security 变得更加容易甚至只需要添加一个依赖就可以保护所有的接口所以如果是 Spring Boot 项目一般选择 Spring Security 。
Shiro 和 Spring Security 相比主要有如下一些特点
Spring Security 是一个重量级的安全管理框架Shiro 则是一个轻量级的安全管理框架 Spring Security 概念复杂配置繁琐Shiro 概念简单、配置简单 Spring Security 功能强大Shiro 功能简单 3Spring Boot 解决跨域问题
跨域可以在前端通过 JSONP 来解决但是 JSONP 只可以发送 GET 请求无法发送其他类型的请求。
推荐在后端通过 CORSCross-origin resource sharing 来解决跨域问题。可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。
由于登录拦截器和跨域的顺序有问题出现了跨域的现象先走filter到达servlet后才进行拦截器的处理把cors放在filter里就可以优先于权限拦截器执行。
4CSRF 攻击 CSRF 代表跨站请求伪造。
这是一种攻击迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求而不是数据窃取因为攻击者无法查看对伪造请求的响应。 五、问题
1Spring Boot Stater
启动器是一套方便的依赖的描述符它可以放在自己的程序中。一站式的获取所需要的 Spring 和相关技术而不需要依赖描述符的通过示例代码搜索和复制黏贴的负载。
其它的启动器项目
Spring Boot 也提供了其它的启动器项目包括包括用于开发特定类型应用程序的典型依赖项。
spring-boot-starter-web-services - SOAP Web Services
spring-boot-starter-web - Web 和 RESTful 应用程序
spring-boot-starter-test - 单元测试和集成测试
spring-boot-starter-jdbc - 传统的 JDBC
spring-boot-starter-hateoas - 为服务添加 HATEOAS 功能
spring-boot-starter-security - 使用 SpringSecurity 进行身份验证和授权
spring-boot-starter-data-jpa - 带有 Hibeernate 的 Spring Data JPA
spring-boot-starter-data-rest - 使用 Spring Data REST 公布简单的 REST 服务
2 spring-boot-maven-plugin
pring-boot-maven-plugin 提供了一些像 jar 一样打包或者运行应用程序的命令。
spring-boot:run 运行你的 SpringBooty 应用程序。
spring-bootrepackage 重新打包你的 jar 包或者是 war 包使其可执行
spring-bootstart 和 spring-bootstop 管理 Spring Boot 应用程序的生命周期也可以说是为了集成测试。
spring-boot:build-info 生成执行器可以使用的构造信息。
3Spring Boot 中添加静态资源
在源文件夹下创建一个名为 static 的文件夹把静态的内容放在里面
4Spring Data
Spring Data 是 Spring 的一个子项目。用于简化数据库访问支持NoSQL 和 关系数据存储。其主要目标是使数据库的访问变得方便快捷。
SpringData 项目支持 NoSQL 存储
MongoDB 文档数据库 Neo4j图形数据库 Redis键/值存储 Hbase列族数据库 SpringData 项目所支持的关系数据存储技术
JDBC JPA Spring Data Jpa 致力于减少数据访问层 (DAO) 的开发量. 开发者唯一要做的就是声明持久层的接口其他都交给 Spring Data JPA 来帮你完成
5Spring Data REST
Spring Data TEST 可以用来发布关于 Spring 数据库的 HATEOAS RESTful 资源。 JPA注解
RepositoryRestResource(collectionResourceRel data, path data)
path- 这个资源要导出的路径段。
collectionResourceRel- 生成指向集合资源的链接时使用的 rel 值。在生成 HATEOAS 链接时使用。
6JPA 和 Hibernate 有哪些区别
JPA 是一个规范或者接口
Hibernate 是 JPA 的一个实现
使用 JPA 的时候使用 javax.persistence 包中的注释和接口时不需要使用 hibernate 的导入包。
建议使用 JPA 注释因为没有将其绑定到 Hibernate 作为实现可以使用另一种 JPA 实现。
7Spring Boot 用户应用程序自定义配置的最好方法是什么
Value 的问题在于您可以通过应用程序分配你配置值。
更好的操作是采取集中的方法使用 ConfigurationProperties 定义一个配置组件。
8在 spring-boot-starter-web 中用 jetty 代替 tomcat
在 spring-boot-starter-web 移除spring-boot-starter-tomcat依赖项并把spring-boot-starter-jetty些添加进去。
9如何使用 Spring Boot 生成一个 WAR 文件
pom.xml修改为如下代码主要两个改动 新加打包成war的声明 packagingwar/packaging
spring-boot-starter-tomcat修改为 provided方式以避免和独立 tomcat 容器的冲突. 表示provided 只在编译和测试的时候使用打包的时候就没它。
10Spring Boot 应用程序作为 Java 应用程序运行时后台会发生什么
当启动 java 应用程序的时候spring boot 自动配置文件就会魔法般的启用了。
当 Spring Boot 应用程序检测到正在开发一个 web 应用程序的时候它就会启动 tomcat。
11 创建一个 Spring Boot Project 的最简单的方法
Spring Initializr是启动 Spring Boot Projects 的一个很好的工具
12SpringBoot 打成jar和普通的jar有什么区别 Spring Boot 项目最终打包成的 jar 是可执行 jar 这种 jar 可以直接通过java -jar xxx.jar命令来运行这种 jar 不可以作为普通的 jar 被其他项目依赖即使依赖了也无法使用其中的类。
Spring Boot 的 jar 无法被其他项目依赖主要还是他和普通 jar 的结构不同。普通的 jar 包解压后直接就是包名包里就是我们的代码而 Spring Boot 打包成的可执行 jar 解压后在 \BOOT-INF\classes目录下才是我们的代码因此无法被直接引用。如果非要引用可以在 pom.xml 文件中增加配置将 Spring Boot 项目打包成两个 jar 一个可执行一个可引用。
13运行SpringBoot有几种方式 打包用命令或者放到容器中运行 用Maven或Gradle插件运行 直接执行main方法运行14开启Spring Boot特性有哪几种方式 继承spring-boot-starter-parent项目 导入spring-boot-dependencies项目依赖
15什么是Swagger Swagger 广泛用于可视化 API使用 Swagger UI 为前端开发人员提供在线沙箱。Swagger 是用于生成 RESTful Web 服务的可视化表示的工具规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger 正确定义时消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此Swagger消除了调用服务时的猜测。
16如何使用Spring Boot实现异常处理 Spring提供了一种使用ControllerAdvice处理异常的非常有用的方法。通过实现一个ControlerAdvice类来处理控制类抛出的所有异常。
17什么是FreeMarker模板 FreeMarker 是一个基于 Java 的模板引擎最初专注于使用 MVC 软件架构进行动态网页生成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。程序员可以处理应用程序代码而设计人员可以处理 html 页面设计。最后使用freemarker 可以将这些结合起来给出最终的输出页面
18SpringBoot有哪几种读取配置的方式 Spring Boot 可 以 通 过 PropertySource,Value,Environment, ConfigurationProperties 来绑定变量。
19Spring Boot 支持哪些日志框架推荐和默认的日志框架是哪个 Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架如果你使用Starters 启动器Spring Boot 将使用 Logback 作为默认日志框架。
20保护SpringBoot应用有哪些方法 在生产中使用HTTPS 使用Snyk检查你的依赖关系 升级到最新版本 启用CSRF保护 使用内容安全策略防止XSS攻击21SpringBoot 2.X有哪些新特性与1.X有什么区别 配置变更 JDK版本升级 第三方类库升级 响应式Spring编程支持 HTTP/2支持 配置属性绑定 更多改进与加强