Spring
文章平均质量分 92
阿★永
这个作者很懒,什么都没留下…
展开
-
在Spring事务提交后做点事儿
最近团队整理出的一份《Rabbit MQ消息定义规范》后,有同学提出了这样的一个场景, 在事务还没有执行完消息就已经发出去了, 导致后续的一些数据或逻辑上的问题产生, 那么既然出现了问题, 我们就需要解决这个问题, 正好这段时间在看Spring事务相关的知识, 所以本文就是带着这样的问题, 给出一些解决此问题的方案, 供大家参考.本文整理了三种解决方案, 但是在给出解决方案之前, 我们需要了解一下这三种方案的技术核心点是什么, 因为这是重点中的重点, 因为三种方案背后的本质逻辑都来源于此.原理核心:转载 2022-07-13 11:13:12 · 2571 阅读 · 0 评论 -
OpenAPI 标准规范了解一下
什么是API规范API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。在关键环节制定明确的API规范有助于 Service 对内提高产品间互通的效率,对外提供一致的使用体验,也有助于更好地被集成。对于API规范,比较知名的是 OpenAPI Specfication[1] 和 Google API Design Guide[2]。前者针对 RESTful API 设计在细节层面给出了非常具体的规定,已经成原创 2021-07-31 12:20:02 · 812 阅读 · 0 评论 -
OAuth 2.0 四种模式
OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。本文接着介绍颁发令牌的实务操作。RFC 6749OAuth 2.0 的标准是 RFC 6749 文件。该文件先解释了 OAuth 是什么。OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。这段话的意思就是,OAuth 的核心就是向第三方应用颁发令牌。然后,RFC 6749 接着写道:(由于互联网有多种场景,)本标准定义了获得转载 2021-02-09 13:01:13 · 604 阅读 · 0 评论 -
Spring Boot实战之以 War 包的形式部署
1. 前言Spring Boot 提供了内置的 tomcat、undertow、jetty 三种 Servlet Web 容器。让我们开箱即用,可以迅速以 JAR 启动一个 Web 应用。但是在某些场景中我们可能还需要将我们的 Spring Boot 容器以 War 的形式进行传统的部署。这时我们就需要通过借助于 SpringBootServletInitializer 来实现。2. Spri...转载 2019-11-05 00:13:42 · 611 阅读 · 0 评论 -
学习Spring Security和Apache Shiro你需要具备这些条件
前言web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择 Spring Security和Apache Shiro 。所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始连续一段时间内,研究一下Spring Security。如果想学习的同学可以关注一下公众号:Felordcn 或者通过https://felord.cn来及时获取相关的干...转载 2019-11-03 13:20:17 · 262 阅读 · 0 评论 -
Spring Boot 事务的使用
Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可。关于事务管理器,不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依赖,框架会转载 2016-10-24 13:18:35 · 547 阅读 · 0 评论 -
Spring Boot 部署与服务配置
Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。项目构建我们使用Maven或Gradle,这将使项目依赖、jar包管理、以及打包部署转载 2016-10-24 13:21:05 · 1349 阅读 · 0 评论 -
在Docker容器中运行Spring Boot应用
在Docker容器中运行Spring Boot应用 Spring Boot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out-of-the-box)的框架配置。另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为Spring Boot提供了一种快速构造原创 2016-11-05 21:56:16 · 13256 阅读 · 1 评论 -
Spring Boot 入门
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2016-10-24 12:33:32 · 397 阅读 · 0 评论 -
Spring boot 使用Druid数据源
Druid 为监控而生的数据库连接池由于工作需要,最近一个项目是Spring Boot架构的需要使用Druid作为数据源,所以整理了这样一篇文章废话不多说,现在开始表演。Druid Spring Boot Starter 用于在Spring Boot项目中轻松集成Druid数据库连接池和监控。 如何使用在 Spring Boot 项目中加入druid-spring-boot-starter依赖ma转载 2018-01-19 15:09:57 · 1840 阅读 · 0 评论 -
通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法
现在在做的项目用到了SpringMVC框架,需要从前端angular接收请求的JSON数据,为了测试方便,所以直接先用AJAX进行测试,不过刚开始用平时用的ajax方法,提交请求会出现415或者400错误,经过研究,终于可以了,现在做个总结。js代码:function postSimpleData() { $.ajax({ type: "POST"...原创 2016-11-17 14:24:28 · 37392 阅读 · 1 评论 -
从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)
摘要:MVC模式早在上个世纪70年代就诞生了,直到今天它依然存在,可见生命力相当之强。MVC模式最早用于Smalltalk语言中,最后在其它许多开发语言中都得到了很好的应用,例如,Java中的Struts、Spring MVC等框架。1. 理解MVCMVC是一种经典的设计模式,全名为Model-View-Controller,即模型-视图-控制器。其中,模型是用于封装数据的载体,例如,在Jav转载 2016-11-22 13:09:12 · 876 阅读 · 0 评论 -
服务发现之Consul介绍、部署和使用
为什么使用服务发现微服务的框架体系中,服务发现是不得不提的一个模块。我相信了解或者熟悉微服务的应该都知道它的重要性。这里简单的介绍一下。我们看下面的一幅图片:图中,客户端的一个接口,需要调用服务A-N。客户端必须要知道所有服务的网络位置的,以往的做法是配置是配置文件中,或者有些配置在数据库中。这里就带出几个问题:需要配置N个服务的网络位置,加大配置的复杂性服务的网络位置变化,都需要改变...原创 2018-12-29 16:09:50 · 2136 阅读 · 4 评论 -
后端架构师技术图谱
《后端架构师技术图谱》数据结构队列集合链表、数组字典、关联数组栈树二叉树完全二叉树平衡二叉树二叉查找树(BST)红黑树B,B+,B*树LSM 树BitSet常用算法排序、查找算法选择排序冒泡排序插入排序快速排序归并排序希尔排序堆排序计数排序桶排序基数排序二分查找Java 中的排序工具布隆过滤器字符串比较K...原创 2019-01-06 23:11:49 · 778 阅读 · 0 评论 -
Spring Boot 动态数据源(多数据源自动切换)
本文实现案例场景: 某系统除了需要从自己的主要数据库上读取和管理数据外,还有一部分业务涉及到其他多个数据库,要求可以在任何方法上可以灵活指定具体要操作的数据库。为了在开发中以最简单的方法使用,本文基于注解和AOP的方法实现,在spring boot框架的项目中,添加本文实现的代码类后,只需要配置好数据源就可以直接通过注解使用,简单方便。一配置二使用 1. 启动类注册动态数据源 2. 配置文件中转载 2016-10-24 13:16:47 · 5641 阅读 · 0 评论 -
Spring Boot 环境变量读取 和 属性对象的绑定
凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量。 如:@Configurationpublic class MyWebAppConfigurer implements EnvironmentAware { private stati转载 2016-10-24 13:14:41 · 809 阅读 · 0 评论 -
Spring Boot 集成Shiro和CAS
请大家在看本文之前,先了解如下知识点: 1、Shiro 是什么?怎么用? 2、Cas 是什么?怎么用? 3、最好有Spring基础可以先看看这两篇文章,按照这2篇文章的内容做一遍: Spring Boot Shiro 权限管理 CAS单点登录首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程。 第二个流程是单纯使用Cas的流程。 第三个图是Shiro集成Cas后的流程。【流转载 2016-10-24 13:11:39 · 693 阅读 · 0 评论 -
使用 Spring Data JPA 简化 JPA 开发
Spring Data JPA 开发指南本文由浅入深地讲述了使用 Spring Data JPA 需要关注的各个方面,为读者了解和使用该框架提供了指导,可以作为 Spring Data JPA 的学习指南。从一个简单的 JPA 示例开始本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍原创 2016-09-12 13:47:13 · 580 阅读 · 0 评论 -
Spring Boot Controller
接上篇文章,HelloWorld程序中我们已经创建了一个HellController,里面包含了响应JSON的方法,本文针对Controller再做一下讲解。回顾上篇文章,我们在Controller中使用 @RestController 注解,该注解是Spring 4.0引入的。查看源码可知其包含了 @Controller 和 @ResponseBody 注解。我们可以理解为 @Controller转载 2016-10-24 12:39:54 · 350 阅读 · 0 评论 -
Spring Boot Servlet
上一篇我们对如何创建Controller 来响应JSON 以及如何显示数据到页面中,已经有了初步的了解。 Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、Filter、Listener、Interceptor 等等。当使用Spring-Boot时,嵌入式Servlet容器通过扫描注解的方式注册Servlet、Filter和Servlet规范的所转载 2016-10-24 12:44:26 · 327 阅读 · 0 评论 -
Spring Boot 过滤器、监听器
上一篇文章已经对定义Servlet 的方法进行了说明,过滤器(Filter)和 监听器(Listener)的注册方法和 Servlet 一样,不清楚的可以查看下上一篇文章:http://blog.csdn.net/lsy0903/article/details/52910612 本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener。过滤器转载 2016-10-24 12:47:58 · 242 阅读 · 0 评论 -
Spring Boot 拦截器
上一篇对过滤器的定义做了说明,也比较简单。过滤器属于Servlet范畴的API,与Spring 没什么关系。 Web开发中,我们除了使用 Filter 来过滤请web求外,还可以使用Spring提供的HandlerInterceptor(拦截器)。HandlerInterceptor 的功能跟过滤器类似,但是提供更精细的的控制能力:在request被响应之前、request被响应之后、视图渲染之前转载 2016-10-24 12:49:39 · 323 阅读 · 0 评论 -
Spring Boot 静态资源处理
Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性。建议大家使用Spring Boot的默认配置方式,如果需要特殊处理的再通过配置进行修改。如果想要自己完全控制WebMVC,就需要在@Configuration注解的配置类上增加@EnableWebMvc(@SpringBootApplication 注解的程序入口类已经包含@转载 2016-10-24 12:52:29 · 453 阅读 · 0 评论 -
Spring Boot 启动加载数据 CommandLineRunner
实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。很简单,只需要一个类就可以,无需其他配置。 创建实现接口 CommandLineRunner 的类package org.springboot.sample.runner;import org转载 2016-10-24 12:55:23 · 339 阅读 · 0 评论 -
Spring Boot 日志记录 SLF4J
在开发中打印内容,使用 System.out.println() 和 Log4j 应当是人人皆知的方法了。 其实在开发中我们不建议使用 System.out 因为大量的使用 System.out 会增加资源的消耗。 而Log4j 更为灵活在性能上也相比 System.out 要高,我们可以配置输出级别,可以指定多个日志文件分别记录不同的日志。 使用 System.out 是在当前线程执行的,写转载 2016-10-24 12:57:28 · 960 阅读 · 0 评论 -
Spring Boot JDBC 连接数据库
文本将对在Spring Boot构建的Web应用中,基于MySQL数据库的几种数据库连接方式进行介绍。 包括JDBC、JPA、MyBatis、多数据源和事务。JDBC 连接数据库1、属性配置文件(application.properties)spring.datasource.url=jdbc:mysql://localhost:3306/testspring.datasource.userna转载 2016-10-24 13:00:06 · 460 阅读 · 0 评论 -
Spring Boot JPA 连接数据库
本文将介绍如何在Spring Boot 工程中添加JPA作为持久化方式。修改 pom.xml 依赖与上一篇介绍的 jdbc 不同的是 spring-boot-starter-jdbc 修改为 spring-boot-starter-data-jpa 即可,当然数据库驱动包也是不可少的,如下: <!-- MYSQL --> <dependency> <groupId>mysql</group转载 2016-10-24 13:01:18 · 372 阅读 · 0 评论 -
Spring Boot MyBatis 连接数据库
最近比较忙,没来得及抽时间把MyBatis的集成发出来,其实mybatis官网在2015年11月底就已经发布了对SpringBoot集成的Release版本,Github上有代码:https://github.com/mybatis/mybatis-spring-boot 前面对JPA和JDBC连接数据库做了说明,本文也是参考官方的代码做个总结。先说个题外话,SpringBoot默认使用 org.转载 2016-10-24 13:03:54 · 1025 阅读 · 0 评论 -
Spring Boot 多数据源
上篇文章介绍了如何手工使用Java代码将对象注册到Spring中,为本文“多数据源”做了基础。下面一个Java类是我已经写好的根据配置文件动态创建多dataSource的代码,其原理也很简单,就是读取配置文件,根据配置文件中配置的数据源数量,动态创建dataSource并注册到Spring中。 代码如下:package org.springboot.sample.config;import jav转载 2016-10-24 13:05:54 · 267 阅读 · 0 评论 -
Spring Boot Shiro 权限管理
本来是打算接着写关于数据库方面,集成MyBatis的,刚好赶上朋友问到Shiro权限管理,就先总结下发出来了。使用Shiro之前用在Spring MVC中,是通过XML文件进行配置。 既然现在在写Spring Boot的帖子,就将Shiro应用到Spring Boot中,我本地已经完成了SpringBoot使用Shiro的实例,将配置方法共享一下。先简单介绍一下Shiro,对于没有用过Shiro的转载 2016-10-24 13:07:36 · 1738 阅读 · 0 评论 -
@GeneratedValue
一、JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法, JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出. 1 @Target({原创 2016-09-12 13:47:34 · 1831 阅读 · 0 评论