
Spring
文章平均质量分 80
此专栏主要是Spring原理及应用,以及平常开发中遇到的问题总结等文章
Cloud-Future
这个作者很懒,什么都没留下…
展开
-
Spring Boot+Spring Security+JWT实现系统认证与授权
Spring Boot+Spring Security+JWT实现系统认证与授权Spring Boot整合Spring Security实现JWT认证Spring Boot项目使用JWT认证JWT认证OAuth2 JWT认证原创 2022-08-03 22:37:22 · 3121 阅读 · 0 评论 -
Spring Boot整合WebSocket实现客户端与服务器之间的双向通信
在之前浏览器还不支持WebSocket的时候,Web开发者大多使用轮询接口的方式来实现近实时的数据更新。这种单方向通信的方式,由于服务器是被动接受查询,只能实现近实时的消息更新,且轮询的频率很难准确确定,如果频率高势必会增加服务器的负担;如果频率低,服务器端的消息可能很有很长的延迟才能达到客户端。如今,web3.0时代的到来,几乎所有的浏览器和Web服务器均支持了WebSocket。WebSocket的产生正式为了解决客户端与Web服务器之间单向通信的问题。WebSocket实现了浏览器(客户端)与Web原创 2022-04-04 22:03:32 · 7856 阅读 · 8 评论 -
Spring Boot项目同时使用http和https
有些时候项目需要同时监听在不同的端口上,比如同时监听http80和https 443端口,这时我们需要自定义web server。假设我们需要项目同时使用http和https两种协议提供服务,分别使用端口80和443。我们知道Spring Boot内置了tomcat,jetty,undertow和响应式的netty4中web server,默认使用tomcat,所以这里使用tomcat要演示如何让项目同时支持使用http和https协议。WebServerFactoryCustomizer接口很明显原创 2022-03-12 17:22:12 · 5716 阅读 · 1 评论 -
Spring Boot 使用Redis发布订阅模式处理消息
Spring Boot 使用Redis发布订阅模式1. Redis发布订阅模式2. Spring Boot中订阅消息2.1 Redis监听器容器配置2.2 创建通道监听器2.3 测试订阅功能3. 借助RedisTemplate发布消息4. 更多参考文档1. Redis发布订阅模式自Redis 2.0.0起支持消息的发布订阅模式,命令行语法:PUBLISH channel massage2. Spring Boot中订阅消息此处不再介绍Spring Boot与Redis的整合,可以参考 Sprin原创 2022-01-29 17:57:10 · 2569 阅读 · 0 评论 -
Spring Boot自定义参数校验器
在Spring Boot中自定义参数校验器当我们在项目中引入spring-boot-starter-validation的starter依赖后就直接可以在Controller的请求方法上使用诸如@NotNull、@Length等注解进行参数校验了。该starter底层是使用hibernate-validator提供的校验器做校验,虽然它提供了丰富的校验器,但是有些时候为了更方便的对参数进行校验,需要我们自己定义参数校验器。准备环境项目中必须有spring-boot-starter-validation原创 2021-08-08 14:48:48 · 2926 阅读 · 0 评论 -
Spring Boot配置元数据“metadata”
本文对应Spring Boot 2.2.6.RELEASE版本。Spring Boot配置元数据“metadata”1.什么是配置元数据metedata?2.配置元数据(Metadata)的格式3.使用注解处理器生成自己的配置元数据3.1 嵌套的属性3.2 添加额外的元数据配置1.什么是配置元数据metedata?在Spring Boot的jar包中包含了metadata文件,提供了所有支持的配置属性的详情(例如属性名称、类型等)。这些文件旨在让IDE在开发者使用application.propert原创 2021-05-25 22:21:48 · 4464 阅读 · 2 评论 -
使用Sharding-JDBC实现分库分表
环境说明使用Spring Boot +Sharding JDBC实现分库分表。使用MyBatis作为持久化框架,MySQL作为数据库。MySQL节点:2个节点,db0和db1Spring Boot版本:2.4.4Sharding JDBC版本:4.1.1MyBatis版本:2.1.4需求说明数据库中使用user表来存储用户的信息,当注册的用户量超过一定阈值时,user表的查询效率将下降,为了提高用户信息的查询效率,必须对user表进行水平分片。user表字段信息如下:字段类型原创 2021-04-04 16:50:18 · 536 阅读 · 0 评论 -
使用Sharding-JDBC实现数据库的读写分离
环境说明使用Spring Boot 整合Sharding JDBC实现数据库的读写分离。使用MyBatis作为持久化框架,MySQL作为数据库。MySQL主从复制:1个master和2个slaverSpring Boot版本:2.4.4Sharding JDBC版本:4.1.1MyBatis版本:2.1.4注意对于不同的Sharding JDBC版本和Spring Boot整合时配置差别很大,一定要对应版本!搭建MySQL主从复制集群可以参考我的这篇博客:《使用docker compos原创 2021-03-26 17:01:24 · 592 阅读 · 0 评论 -
Spring MVC中的HandlerMethodArgumentResolver
Spring MVC中的HandlerMethodArgumentResolver什么是HandlerMethodArgumentResolver(处理器方法参数解析器)?它有什么用?这篇博客用于记录对HandlerMethodArgumentResolver的理解和用法。什么是处理器方法参数解析器?首先什么是Handler?我的理解是Spring MVC中真正用于处理业务逻辑的类,也就是常说的、标注了@Controller注解的Controller类;Controller类中使用@RequestMa原创 2021-03-18 14:02:37 · 2277 阅读 · 0 评论 -
Spring MVC中<mvc:default-servlet-handler/>配置的作用
通常在进行Spring MVC配置的时候会将DispatcherServlet的url-pattern配置成"/",Spring MVC将捕获所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,所以当请求一个图片或者其他静态资源时会出现404的错误。<servlet> <servlet-name>springMVC&l...原创 2020-02-21 15:53:12 · 746 阅读 · 0 评论 -
Spring MVC 如何优雅的对参数进行校验?
作者:锦成同学juejin.im/post/5d3fbeb46fb9a06b317b3c48整理:后端技术精选很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者不断的返回异常时的校验信息,在代码中相当冗长, 充满了if-else这种校验代码,今天我们就来学习spring的javax.validation 注解式参数校验。为什么要用validator1.javax....转载 2019-09-11 20:35:43 · 5653 阅读 · 0 评论 -
Spring mvc Controller接收参数相关的注解
与Spring mvc Controller接收参数直接相关的有三个注解:@RequestParam、@PathVariable和@RequestBody。@RequestParam:取query string当中的参数,query string参数就是请求url中的查询参数,例如:/test?id=1,这里的id就是query string。打开Chrome浏览器的调试工具,打开Netw...原创 2019-06-24 17:45:37 · 6736 阅读 · 0 评论 -
Spring MVC @RestController
@RestController 相当于@Controller+@ResponseBody如果在类上标注@RestController,此类会被Spring 识别为提供Rest Api的控制器。如果方法返回String ,响应的Content-Type类型为text/html;@GetMapping("/") public String index(){ ret...原创 2018-12-04 14:47:56 · 600 阅读 · 0 评论 -
Spring MVC 返回JSON数据
添加依赖包maven pom.xml<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.4</version> &am原创 2018-03-19 14:21:33 · 283 阅读 · 0 评论 -
Spring @Value注解指定默认值
Spring中**@Value**注解用于读取配置文件属性向Spring 组件注入值。可以使用默认值达到0配置的目的。使用方式如下:@Value("${host:locahost}")private String host;指定localhost为默认值。原创 2020-12-25 15:15:52 · 1405 阅读 · 0 评论 -
Spring Boot整合Elasticsearch,最新最全教程
要想快速入门新技术,英文文档的阅读能力必不可少。本篇文章主要参考《Spring Data Elasticsearch》Spring Boot整合Elasticsearch的官方文档。Elasticsearch官网参考文档:https://www.elastic.co/guide/index.htmlElasticsearch官方下载地址:https://www.elastic.co/cn/downloads/elasticsearchElasticsearch目前最近版本为:7.10.1最近系统.原创 2020-12-21 12:18:56 · 100119 阅读 · 60 评论 -
Spring中定义的事务传播行为
事务传播行为定义了被调用方法的事务边界。在Spring中定义了7中事务传播行为。总结为下表: 传播行为 意义 PROPERGATION_MANDATORY 表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常 PROPAGATION_NESTED 表示如果当前事务存在,则方法应该运行在一个嵌套事务中。新增Savepoint点,与当前事务同步提交或回滚 PROPAG.原创 2020-12-02 12:25:15 · 215 阅读 · 0 评论 -
Spring Validation应用与实现原理剖析
之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation。本文会详细介绍Spring Validation各种场景下的最佳实践及其实现原理,死磕到底! 项目源码:spring-validation简单使用Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现。hibernate validation是对这个规范的实现,并增加了校验注解如@Email、@Length等。转载 2020-11-28 10:14:49 · 326 阅读 · 0 评论 -
Spring MVC整合FreeMarker模板引擎总结
Spring版本声明:Spring 5.2.5.RELEASESpring mvc 5.2.5.RELEASE项目基于Maven导入依赖Freemarker依赖在pom文件中导入下面的依赖:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version.原创 2020-10-23 17:17:26 · 461 阅读 · 0 评论 -
Spring 整合MongoDB
目录1、在pom.xml文件中添加mongoDB的依赖:2、通过xml配置MongoTemplate3、AbstractMongodbDao类,实现MongoDb的CRUD操作4、测试4.1 MongoUser 实体类,对应db中的集合user4.2 UserMongoDao4.3MongoUserManageService4.4 MongoUserManage(controller)5、启动MongoDB Server,为数据库testdb,添加一个用户6、启动项.原创 2020-05-18 17:14:24 · 919 阅读 · 0 评论 -
Spring Bean工厂的接口
1、BeanFactory接口Spring中的BeanFactory是bean工厂的顶级接口,它定义了bean工厂的基本职能。具有方法如下:2、AutowireCapableBeanFactory接口AutowireCapableBeanFactory接口是BeanFactory的子接口,它扩展了BeanFactory的功能,使bean工厂对bean具有自动注入的功能。在这个...原创 2020-03-21 17:16:33 · 573 阅读 · 0 评论 -
如何实现Spring MVC Web项目的日志记录?
1、需求分析 有些系统需要审计日志功能,简单来说就是实现用户操作日志的记录。我们约定:一个接口功能足够单一只对应用户的一项功能。对于需要记录日志的接口能够根据配置做到日志的记录。将具体的需求总结如下:日志记录功能不能影响具体的业务逻辑,即对业务代码无侵入性。 日志记录功能对业务开发者透明,即业务开发者无需知道日志记录的实现细节,就能使用。 日志记录功能可插拔,即能够灵活配置...原创 2020-03-15 15:26:16 · 1174 阅读 · 0 评论 -
在Spring 中使用H2数据库
为什么使用H2?有时候,做个简单的Demo,需要连接数据库,如果使用像mysql这样的数据库服务器,有点大题小做。 而使用H2正好满足轻量级开发测试的需求。1、如果是Maven项目导入下面的依赖pom.xml<dependency> <groupId>com.h2database</groupId> <artifactId...原创 2020-03-15 14:17:10 · 1280 阅读 · 0 评论 -
使用策略模式干掉代码中的if...else...
需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。订单实体:service接口:传统实现根据订单类型写一堆的ifelse:策略模式实现利用策略模式,只需要两行即可实现业务逻辑:可以看到上面的方法中注入了HandlerContext,这是一个处理器上下文...转载 2020-01-01 16:09:51 · 315 阅读 · 0 评论 -
@PropertySource注解
@PropertySource是Spring boot为了方便引入properties配置文件提供的一个注解,可以标注在SpringBoot的启动类上,还可以标注在配置类(使用@Configuration标注的类)上。例如:@PropertySource(value = {"classpath:box.properties"}),将classpath下的box.properties,注入到Sp...原创 2018-12-27 16:15:17 · 7253 阅读 · 0 评论 -
@ServletComponentScan注解
在 Spring Boot启动类上使用@ServletComponentScan 注解后,使用@WebServlet、@WebFilter、@WebListener标记的 Servlet、Filter、Listener 就可以自动注册到Servlet容器中,无需其他代码。...原创 2018-12-20 10:12:15 · 3158 阅读 · 0 评论 -
Maven项目中使用MyBatis Generator插件
Maven项目中使用MyBatis Generator插件生成代码MyBatis Generator官方提供了一个Maven 插件用于在Maven 项目中快速生成代码。在pom中引入插件:<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>my...原创 2018-12-19 16:24:43 · 304 阅读 · 0 评论 -
微服务中基于Spring Boot的maven分布式项目框架的搭建
https://blog.youkuaiyun.com/eson_15/article/details/83585344转载 2018-11-01 11:19:48 · 3029 阅读 · 0 评论 -
Spring MVC中的/*和/的区别
在Spring MVC的项目中需要配置一个Spring servlet用于拦截 请求,有时候不清楚url-pattern /*与/ 的区别会出现一些问题。特别是用过struts2的,习惯上配置为/*,如果使用Spring MVC这样配置会出现404的错误。<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee原创 2017-11-11 16:02:29 · 755 阅读 · 0 评论 -
spring boot全局异常处理
spring boot默认会将异常信息以html的形式返回到客户端,给用户带来非常不好的体验,可以用下面的方式,自定义异常处理和消息反馈。 import java.io.IOException;/** * controller层异常处理增强 */@ControllerAdvice@RestControllerpublic class ControllerExce...原创 2018-12-24 16:34:30 · 280 阅读 · 0 评论 -
自定义Spring Boot Starter
我们在开发spring boot应用的时候,经常用到spring-boot-starter-***的依赖,这些依赖其实也是一个独立的springboot 项目,并且可以自动配置。下面记录一下如何实现自己的starter,从而对Spring Boot的starter有一个认识。 首先新建一个Spring Boot项目,编写自己的代码。 为了便于观察自定义的sta...原创 2019-01-16 17:23:39 · 368 阅读 · 0 评论 -
Spring Boot中使用事务
得益于Spring Boot的自动配置功能,在Spring Boot中使用事务非常简单,首先在启动类上使用@EnableTransactionManagement注解启用事务管理,然后在访问数据库的service类上标注@Transactional即可。在类上标注,所有方法启用事务,在方法上标注,只在方法上启用事务。@Service@Transactionalpublic cla...原创 2019-01-22 15:12:09 · 669 阅读 · 0 评论 -
MySQL 报错java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GE
有这样一种场景,在插入数据之后需要获取生成的数据主键,在使用Spring JDBC的JdbcTemplate的update(PreparedStatementCreator,KeyHolder)方法获取生成的主键,出现下面的异常:java.sql.SQLException: Generated keys not requested. You need to specify Statement....原创 2019-03-27 15:13:47 · 1028 阅读 · 0 评论 -
浅谈spring为什么推荐使用构造器注入
原文:https://cloud.tencent.com/developer/article/1126880【Spring】浅谈spring为什么推荐使用构造器注入一、前言 Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Spring的IOC容器...转载 2019-04-23 10:10:22 · 941 阅读 · 2 评论 -
Spring 中context:annotation-config、context:component-scan和mvc:annotation-driven配置的作用
一、 <context:annotation-config/> 配置 <context:annotation-config />是为了激活Spring所支持的一系列注解,诸如:Spring自带的@Required和@Autowired,JSR 250提供的 @PostConstruct, @PreDestroy and @Resource注解,JAX-WS提供...原创 2019-05-11 09:38:36 · 1212 阅读 · 0 评论 -
spring boot日志配置
spring boot日志配置常用的配置项有:logging.path=/var/log/ #配置日志文件存储路径logging.file=/var/log/my-log.log #配置日志文件名,如果不指定默认为spring.loglogging.file.max-history=10 #保存的最大日志文件数量logging.file.max...原创 2019-06-19 21:03:51 · 773 阅读 · 0 评论 -
Spring @Bean注解全解析
原文:https://mp.weixin.qq.com/s/eYWWtKEHMG7Fja_JnPIGSg,篇幅有点长!@Bean 注解全解析随着SpringBoot的流行,基于注解式开发的热潮逐渐覆盖了基于XML纯配置的开发,而作为Spring中最核心的bean当然也能够使用注解的方式进行表示。所以本篇就来详细的讨论一下作为Spring中的Bean到底都有哪些用法。@Bean 基础声明...转载 2019-07-14 11:08:07 · 905 阅读 · 0 评论 -
Spring 乱码问题
Spring 乱码问题的解决方法原创 2017-09-28 14:32:29 · 410 阅读 · 0 评论