SpringBoot
文章平均质量分 70
一步一步学习SpringBoot
瞎胡扯
这个作者很懒,什么都没留下…
展开
-
@Transactional 事务加了 锁 为什么还有并发问题?
这个手动开启事务,需要每个方法都需要实现,这个也是比较繁琐,这种方式可以抽象出一个公共类,统一来实现事务的处理。方法一和方法二的效率都比较低,另一种方式可以把,可以把需要 把需要并发控制的业务,单独抽离出来,进行事务控制操作。由上图可以看出,当线程1 释放了锁,还未提交事务之前,线程2 已经获取锁并提前提交了事务,从而导致了并发的问题。不允许事务并发执行,而必须串行化执行,最安全,不可能出现更新、脏读、不可重复读、幻读,但是效率最低。注解的方法 添加 AOP切面来时先事务管理的。最大范围也就是方法级别的。原创 2022-10-11 15:44:10 · 3862 阅读 · 1 评论 -
@Transactional 注解失效情况及解决办法
既然事务管理是基于动态代理对象的代理逻辑实现的,那么如果在类内部调用类内部的事务方法,这个调用事务方法的过程并不是通过代理对象来调用的,而是直接通过this对象来调用方法,绕过的代理对象,肯定就是没有代理逻辑了。这种的话,可能我们比较常见,问题就出在代理逻辑中,我们先看看源码里卖弄动态代理逻辑是如何为我们管理事务的。事务方法内部捕捉了异常,没有抛出新的异常,导致事务操作不会进行回滚。注解的类,创建的切面,当在同一个类中调用是,切面失去了作用。的方法的事务处理操作,而在处理。此种情况跟情况一的原因类似,在。原创 2022-10-09 16:57:34 · 707 阅读 · 0 评论 -
Java 基础 之 Valid 验证
一、@Valid 简介Bean Validation 内置的校验器校验器说明@Null被注解的元素必须为 null@NotNull被注解的元素必须不为 null@AssertTrue被注解的元素必须为 true@AssertFalse被注解的元素必须为 false@Min(value)被注解的元素必须是一个数字,其值必须大指定的最小值@Max被注解的元素必须是一个数字,其值必须小于指定的最大值@DecimalMin限制必须为一个不小于原创 2021-11-04 17:21:08 · 4688 阅读 · 0 评论 -
SpringBoot - 数据库操作之 JdbcTemplate 多数据源配置
所谓多数据源,就是一个Java EE项目中采用了不同数据库实例中的多个库,或者同一个数据库实例中多个不同的库。比如实现数据库读写分离、分库分表、备份等操作。JdbcTemplate多数据源的配置是比较简单的,因为一个JdbcTemplate对应一个DataSource,开发者只需要手动提供多个DataSource,再手动配置JdbcTemplate即可。1、添加依赖具体依赖的添加请参考上一章的介绍。2、创建两个数据库3、在application.properties中配置多数据源..原创 2020-12-27 17:29:26 · 1375 阅读 · 0 评论 -
SpringBoot - 数据库操作之 JdbcTemplate 基本使用
一、什么是JdbcTemplateJdbcTemplate是Spring提供的一套JDBC模板框架,利用AOP技术来解决直接使用JDBC时大量重复代码的问题。 JdbcTemplate虽然没有MyBatis那么灵活,但是比直接使用JDBC要方便很多二、安装配置1、在 pom.xml 文件中添加如下依赖spring-boot-starter-jdbc:提供对JDBC数据库的支持 mysql-connector-java:MySQL数据库驱动 hikari:SpringBoot 自...原创 2020-12-27 16:35:42 · 1406 阅读 · 0 评论 -
SpringBoot - 获取 POST 请求参数详解
上一篇文章介绍了Controller如何接收通过GET方式传递过来的参数,这篇文章介绍一下何接收通过POST方式传递过来的参数。本篇文章为了方便 使用 Postman进行 POST 请求 的测试一、接收 Form 表单数据1、基本的接收方法(1)创建Controller接收form-data格式的POST数据,如下所示:@RestControllerpublic class BookController { @PostMapping("/add...原创 2020-12-27 15:39:59 · 42628 阅读 · 3 评论 -
SpringBoot - 获取Get请求参数详解
利用Spring Boot来制作Web应用,就必定会涉及到前端与后台之间互相传递参数。下面演示Controller如何接收以GET方式传递过来的参数。一、直接在请求路径中(1)、假设请求地址是如下这种RESTful风格,Springboot 这个参数值直接放在路径里面http://localhost:8080/hello/Springboot(2)、Controller 定义,如下:@RestControllerpublic class HelloCont...原创 2020-12-27 11:25:39 · 36710 阅读 · 4 评论 -
SpringBoot - 解决跨域请求问题
现在项目开发中,前后端分离越来越流行了,但在前后端分离通过 Ajax访问时会存在一个跨域的问题。即由于浏览器的安全性限制,不允许AJAX访问协议不同、域名不同、端口号不同的数据接口,否则会出报No 'Access-Control-Allow-Origin' header is present on the requested resource.错误。如下所示:强大的 Spring Boot支持通过设置CORS(跨源资源共享)来解决跨域请求问题。具体如下几种方式可以进行配置,我们选择一种...原创 2020-12-26 15:18:15 · 1796 阅读 · 0 评论 -
SpringBoot - 文件上传
在Spring Boot中对此做了更进一步的简化,文件上传更为方便。基本做到了零配置,我们只需要在项目中添加spring-boot-starter-web依赖即可。Java中的文件上传一共涉及两个组件:一个是使用 commons-fileupload 来处理 multipart 请求的 CommonsMultipartResolver。 一个是基于Servlet 3.0来处理multipart请求的,因此若使用StandardServletMultipartResolver。由于...原创 2020-12-26 14:31:53 · 400 阅读 · 1 评论 -
SpringBoot - 实现返回 JSON 数据
JSON是目前主流的前后端数据传输方式,尤其是现在前后端分离模式的盛行,后端返回JSON格式数据更是主流。在Spring Boot项目中,只要添加了Web依赖(spring-boot-starter-web),就可以很方便地实现JSON转换。一、默认实现Web依赖默认加入了jackson-databind作为JSON处理器,我们不需要要添加额外的JSON处理器就可以返回一段JSON。实例演示:1、创建实体类public class User { ...原创 2020-12-26 12:36:03 · 1344 阅读 · 1 评论 -
SpringBoot - 静态资源访问
一、直接访问模版页面在Spring Boot项目中,如果使用了模板引擎,可能有一些模版页面不需要通过控制器加载数据,只需要直接跳转展示。过去使用SpringMVC时,如果访问一个页面,必须要写相应的Controller类。而Spring Boot要实现这个需求只需要直接实现WebMvcConfigurer 接口重写addViewControllers方法配置映射关系即可,不需要在写相应的Controller类。1、在 resources/templates 目录下添加一个...原创 2020-12-26 10:47:03 · 6663 阅读 · 0 评论 -
SpringBoot - 整合 Thymeleaf 模板引擎
一、基本介绍1、什么是ThymeleafThymeleaf是新一代Java模板引擎,类似于Velocity、FreeMarker等传统Java模板引擎。 Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数..原创 2020-12-25 17:57:07 · 242 阅读 · 0 评论 -
SpringBoot - 配置文件使用详解(Profile 多环境配置)
Spring Boot中采用了大量的自动化配置,但是对开发者而言,在实际项目中不可避免会有一些需要自己手动配置,承载这些自定义配置的文件就是resources目录下的application.properties文件(也可以使用 application.yaml 文件替代 application.properties 文件)。一、配置文件的优先级Spring Boot项目中的 application.properties 配置文件一共可以出现在如下4个位置:项目根目录下的config文件夹中。.原创 2020-12-25 16:20:28 · 1179 阅读 · 1 评论 -
SpringBoot - 内置 Web 容器配置
在 Spring Boot 项目中,可以内置 Tomcat、Jetty、Undertow、Netty等容器。一、Tomcat 配置当开发者添加了spring-boot-starter-web依赖之后,默认会使用Tomcat作为Web容器。1、常规配置(1)要对Tomcat进行进一步的配置,可以在application.properties 或者application.yaml中进行配置,(2)下面我们以 application.properties 为例 添加入配...原创 2020-12-25 14:22:13 · 1332 阅读 · 0 评论 -
SpringBoot - 入门教程 (创建、运行项目,REST服务样例)
SpringBoot - 入门教程 (创建、运行项目,REST服务样例)由于微服务、分布式架构思想的流行,SpringBoot 和 SpringCloud 也已成为当前最流行的微服务框架。本文通过样例的方式演示如何搭建、运行一个简单 SpringBoot 项目。在搭建之前需要保证,我们的电脑上已经安装了如下环境: JDK8+ Maven3.0+ InteIIij IDEA 、 eclipse、STS 一、创建项目SpringBoot工程可研通过很多种方式创建,最..原创 2020-12-25 11:31:04 · 298 阅读 · 0 评论 -
SpringBoot — 安全框架 Spring Security 详解四
虽然前面我们实现了通过数据库来配置用户与角色,但认证规则仍然是使用HttpSecurity进行配置,还是不够灵活,无法实现资源和角色之间的动态调整。这篇文章我们就介绍一下通过数据库查询某个URL资源的访问角色。四、基于数据库的URL权限规则配置1、数据库设计这里在上一篇文章的基础上再添加 资源表和资源权限表 两种数据表,表结构如下所示:资源表,保存每个菜单的URL CREATE TABLE `menus` ( `id` bigint(20) unsigned NOT NULL ...原创 2020-12-09 16:36:53 · 462 阅读 · 0 评论 -
SpringBoot — 安全框架 Spring Security 详解三
在上篇文章中我们介绍了,在内存中配资用户名、密码和角色的方法,但是在实际项目中我们都是把用户信息保存在数据库中的,所以我们需要数据库找那个获取用户信息。那么,这篇文章就介绍一下通过数据的方式获取用户信息。三、基于数据库的用户角色配置1、添加依赖和配置(1)、我们这次通过MyBatis操作MySQL数据库,所有首先需要添加上依赖。<dependency> <groupId>org.mybatis.spring.boot</groupId> &.原创 2020-12-09 15:01:10 · 172 阅读 · 0 评论 -
SpringBoot — 安全框架 Spring Security 详解二
二、基于内存的用户、URL权限配置1、配置内存用户角色(1)、我们可以通过继承 WebSecurityConfigurerAdapter 类,重写其 configure(AuthenticationManagerBuilder auth) 方法设置内存用户,如下所示:@Configurationpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { //配置内存用户 @Override..原创 2020-12-09 11:45:42 · 215 阅读 · 0 评论 -
SpringBoot — 安全框架 Spring Security 详解一
一、基本用法1,什么是 Spring Security ?Spring Security是一个相对复杂的安全管理框架,功能比Shiro更加强大,权限控制细粒度更高,对OAuth 2的支持也更友好。 由于Spring Security源自Spring家族,因此可以和Spring框架无缝整合,特别是Spring Boot中提供的自动化配置方案,可以让Spring Security的使用更加便捷。2,安装配置我们只需要编辑pom.xml,添加spring-boot...原创 2020-12-09 10:18:18 · 804 阅读 · 2 评论