allowedHeaders("*") // 设置请求头 .allowedMethods("GET", "POST", "PUT", "DELETE") // 设置允许的方式
对rest风格的支持 rest使用与原理 核心Filter :HiddenHttpMethodFilter 源码分析 在springboot的主配置文件中开启对rest风格的URL的支持 原理 Rest...如何默认表单中_method 这个名字换成我们自己喜欢的,即自定义filter ---- rest使用与原理 @xxxMapping; Rest风格支持(使用HTTP请求方式动词来表示对资源的操作...的核心配置类中,默认关闭了hiddenHttpMethodFilter,即默认不支持Rest风格的URL @Bean @ConditionalOnMissingBean(HiddenHttpMethodFilter.class...的主配置文件中开启对rest风格的URL的支持 spring: mvc: hiddenmethod: filter: enabled: true #开启页面表单的...---- 如何默认表单中_method 这个名字换成我们自己喜欢的,即自定义filter //自定义filter @Bean public HiddenHttpMethodFilter
Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。...MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。 MongoDB中的一条记录就是一个文档,是一个数据结构,由字段和值对组成。...MongoDB支持OS X、Linux及Windows等操作系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。...MongoDB的适合对大量或者无固定格式的数据进行存储,比如:日志、缓存等。对事物支持较弱,不适用复杂的多文档(多表)的级联查询。文中演示mongodb版本为3.4。...到此springboot对应mongodb的增删改查功能已经全部实现。
前言 有玩过mongodb的朋友大概会知道mongodb4.0版本已经可以支持多文档副本集事务。而最新版本4.2更是支持分片事务,即真正的支持分布式事务。...事务整合 1、使用事务的前置条件 mongodb版本大于等于4,本文mongodb版本为4.10版本 mongodb搭建了副本集,本文mongodb为一主两从 本文使用的springboot版本为springboot2...整合mongodb副本集事务存在的坑点 副本集事务只对已经存在的mongodb中的集合起作用,如果要进行操作的集合,在mongodb中还没有,必须得先创建该集合,否则当该集合进行插入操作时,会报类似“Cannot...create namespace sampledb_200.demo in multi-document transaction ”的错误 总结 通过这个例子,给我的最大的感受是springboot确实是一个神器...而如果不使用springboot来整合,直接使用mongodb官方提供的api,就要写一坨代码。
SpringBoot中的IoC (原创内容,转载请注明来源,谢谢) 一、Spring IoC IoC又称为依赖反转,有两种方式,一种是DI(依赖注入),另一种是DL(依赖查找)。...但是构建IoC容器的背后,更多的是DI。 1、Spring IoC DI流程 1)收集和注册 第一阶段是构建和收集Bean,通常通过XML或者java代码的方式进行构建和定义。...早期Spring可以通过xml进行此工作,但是Springboot中,更趋向于使用Annotation的方式,即@注解的方式。...2、Java Config 基于Java Config的方式,即对Annotation的完美实现。 1)表达形式层面 对于以前复杂的bean的xml的配置,现在可以用注解的方式来实现。...对于某个bean,如果依赖于其他的bean,则只需要在该方法返回值的new构造方法中,传入所依赖的bean对应的方法即可。
在该方法中可以做类似校验的功能。如果返回 true,则继续调用下一个拦截器。如果返回 false,则中断执行,也就是说我们想调用的方法 不会被执行,但是你可以修改 response 为你想要的响应。...当处理程序启动一个异步请求时,它会在DispatcherServlet 不调用的情况下退出postHandle,afterCompletion就像它通常为同步请求所做的那样,因为请求处理的结果(例如 ModelAndView...实现可以使用提供的请求和响应,但应避免以与处理程序的并发执行冲突的方式修改它们。此方法的典型用途是清理线程局部变量。...>>>>>>>>>>> >>>>> MyInterceptor afterCompletion >>>>>>>>>>>>>>>>>>>>>> 运行流程如下: 拦截器执行顺序是按照Spring配置文件中定义的顺序而定的...Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/springboot中的handlerinterceptoradapter
SpringBoot 应用篇 实现后端的接口版本支持 作为一个主职的后端开发者,在平时的工作中,最讨厌的做的事情可以说是参数校验和接口的版本支持了。...对于客户端的同学来说,业务的历史包袱会小很多,当出现不兼容的业务变动时,直接开发新的就好;然而后端就没有这么简单了,历史的接口得支持,新的业务也得支持,吭哧吭哧的新加一个服务接口,url 又不能和之前的相同...约定 需要实现上面的 case,首先有两个约定 每个请求中必须携带版本参数 每个接口都定义有一个支持的版本 2....,注意下面的实现中,默认版本为1.0.0,并实现了Comparable接口,支持版本之间的比较 @Data public class ApiItem implements Comparable<ApiItem...类版本+方法版本 每个方法上添加版本有点蛋疼,在上面的注解定义中,就支持了类上注解,从实现上也可以看出,当方法和类上都有注解时,选择最大的版本 @Api("2.0.0") @RestController
springboot中SPI机制 一、从java类加载机制说起 java中的类加载器负载加载来自文件系统、网络或者其他来源的类文件。jvm的类加载器默认使用的是双亲委派模式。...Bootstrap ClassLoader:负责加载JDK自带的rt.jar包中的类文件,是所有类加载的父类 Extension ClassLoader:负责加载java的扩展类库从jre/lib/ect...3、springboot中的类SPI扩展机制 在springboot的自动装配过程中,最终会加载META-INF/spring.factories文件,而加载的过程是由SpringFactoriesLoader...从CLASSPATH下的每个Jar包中搜寻所有META-INF/spring.factories配置文件,然后将解析properties文件,找到指定名称的配置后返回。...需要注意的是,其实这里不仅仅是会去ClassPath路径下查找,会扫描所有路径下的Jar包,只不过这个文件只会在Classpath下的jar包中。
springboot之mvc原理(二)-能力支持 ?...一 概述 前边一篇文章《springboot之mvc原理(一)-请求处理》我们详细分析了springboot应用接收http请求的处理过程,那么进一步的思考一下,为什么应用启动支持就能处理http...在应用启动过程中springboot帮我们做了什么呢?DispatchServlet使用的各种组件哪里来的?本篇文章我们将从原理和源码层面对springboot的web能力支持做一下分析和描述。...WebMvcAutoConfiguration是springboot提供的对于mvc能力支持的自动配置。...这也是springboot自动配置的核心实现和支持。
secure-ext-spring-boot-starter自发布以来受到广大童鞋的关注,也收到各位同行朋友好的建议与需求,主要是常规情况下我们可能根据各自项目需求,列表页会返回Page对象,Page中包含...records(List类型),records又包含实际的Entity,因此大多数情况下返回的会是复杂对象。...因此经过几天的优化调整,重新发布升级版,本次主要升级内容: 1. 支持自动化配置; 2....支持深度脱敏,支持复杂对象,嵌套对象,对象内多层级嵌套,自动寻找返回值中嵌套对象包含的需脱敏的属性; 最新版本 最新发布版已更新到mave中央仓库:[Maven Central][1.0.3-release...示例 代码略长,大致如下:方法返回Page,Page中的Records为List,List中存放实体类SensitiveEntity,SensitiveEntity又包含ListSubEntities,
@Import注解算是SpringBoot自动配置原理中一个很重要的注解 认识@Import注解 先看一下源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME...context.getBean(Tom.class); System.out.println(tom); } } @Import用法 第一种普通组件 @Import({ 要导入的容器中的组件...其实SpringBoot的自动配置就是@Import的一个应用 @SuppressWarnings("deprecation") @Target(ElementType.TYPE) @Retention...容器中 其实这三种用法也算是一种用法,就是导入一个类到容器,容器根据类的注解类型等信息对不同类进行不同处理; 方法一:导入一个Configuration组件,组件创建了一个Tom类的Bean; 方法二:...CustomSelector返回的类的全限定类名,实际上要导入到容器中的组件全类名; 方法三:ImportBeanDefinitionRegistrar类似于第二种ImportSelector用法,只不过这种用法能自定义化注册
如何处理新任务 // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行 executor.setRejectedExecutionHandler...中的方法名,表明executeAsync方法进入的线程池是asyncServiceExecutor方法创建的。...: end executeAsync 通过以上日志可以发现,[async-service-]是有多个线程的,显然已经在我们配置的线程池中执行了,并且每次请求中,controller的起始和结束日志都是连续打印的...、submit等方法,在里面调用showThreadPoolInfo方法,这样每次有任务被提交到线程池的时候,都会将当前线程池的基本情况打印到日志中; 修改ExecutorConfig.java的asyncServiceExecutor...如何处理新任务 // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行 executor.setRejectedExecutionHandler
它支持存储的 value 类型很多,包括 String(字符串)、List(列表)、Set(集合)、Sorted-Set(有序集合) 和 Hash(哈希类型)。...向集合中添加多次相同的元素,集合中只存在一个该元素。在实际应用中,这意味着在添加一个元素前不需要先检查元素是否存在。...不同之处在于,有序集合中的每个成员都关联一个 Score,Score 是在排序时候使用的,按照 Score 的值从小到大进行排序。集合中每个元素是唯一的,但 Score 有可能重复。...Pom.xml 中引用相关的依赖 中的, ?
SpringBoot中的@Conditional注解 一、介绍 在Spring的应用下,我们希望一些bean可以通过一些条件来判断是否需要实例化,并加载到spring容器中。...类型,当指定的所有类的 bean 都包含在 BeanFactory 中时,此条件才匹配 */ Class<?...type() default {}; /** * 检查bean的注解类型,当指定的所有注解都在 BeanFactory 中的 bean 上定义时,此条件才匹配 */ Class的所有 bean 名称都包含在 BeanFactory 中时,此条件才匹配。...; /** * 可能在其通用参数中包含指定 bean 类型的其他类。
大家好,又见面了,我是你们的朋友全栈君。...@ApiModelProperty()注解用于方法、字段,表示对model属性的说明或者数据操作更改,以下是它的源码: // IntelliJ API Decompiler stub source...举个简单的例子: @ApiModel(value="user", description="users") public class UserVO implements Serializable{
Profile是spring对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境。...dev application-dev.propertites server.port=8081 application-prod.properties server.port=8082 这时我们启动springboot...确实切换到了application-dev环境 Tomcat started on port(s): 8081 (http) with context path '' 第二种方式:我们注释掉上述三个文件中的内容...并可以在主环境块中指定要使用的环境,启动springboot之后: Tomcat started on port(s): 8081 (http) with context path '' 第三种方式:点击...启动springboot: Tomcat started on port(s): 8082 (http) with context path '' (2) 使用虚拟机参数 ?
SpringBoot的自动装配是拆箱即用的基础,也是微服务化的前提。其实它并不那么神秘,我在这之前已经写过最基本的实现了,大家可以参考这篇文章。...一、自动装配过程分析 1.1、关于@SpringBootApplication 我们在编写SpringBoot项目时,@SpringBootApplication是最常见的注解了,我们可以看一下源代码:...更多相关内容:SpringBoot内容聚合 1.2、@EnableAutoConfiguration 一旦加上此注解,那么将会开启自动装配功能,简单点讲,Spring会试图在你的classpath下找到所有配置的...但是该类在SpringBoot1.5.X版本已经过时了,因此我们看一下它的父类AutoConfigurationImportSelector: /* * Copyright 2012-2017 the...更多相关内容:SpringBoot内容聚合 回过头来我们看一下AutoConfigurationImportSelector的selectImport方法: @Override public String
springboot 自定义 cache 原理:在 SpringBoot 的 Cache 中,会默认使用 SimpleCacheManager, 生成一个 KeyGenerator(),将数据保存在 ConcurrentMap...中 也就是重写一个 MyCacheConfig类,来覆盖 @EnableCaching默认的方法 ?...在 spring 配置文件中定义,必须指定至少一个 例如 @Cacheable(value=”mycache”)@Cacheable(value={”cache1”,”cache2”} key 缓存的...@CachePut 注释,这个注释可以确保方法被执行,同时方法的返回值也被记录到缓存中,实现缓存与数据库的同步更新。...【1号员工没有在缓存中更新】 ? 现在将 1 号数据更改 ? 再查就是 maoli 了 ? ? ## @CacheEvict @CacheEvict 缓存清除 key:指定要清除的数据 ?
Import注解在4.2之前只支持导入配置类 在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean。 在 spring boot 的配置类中的使用比较多。...1.测试 @Import 的自动导入功能 1.一个配置类 @Configuration @Import(ImportDemo.class) public class ImportConfig {...} 2.一个普通没有加任何注解的类 public class ImportDemo { public void doSomething () { System.out.println...AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.springboot.importtest...证明,ImportDemo 是由 @Import 动态注入到 spring 容器中的
今天介绍 SpringBoot 的数据缓存。...=com.mysql.cj.jdbc.Driver #我把ip去掉了,33306是我docker中的mysql端口转发,MyBatis数据库,useSSL=false连接外网 # 这里是jdbc:mysql...) { return employeeService.getEmpByLastName(lastName); } } 缓存用 @Cacheable 封装在 server 服务中的...SimpleCacheConfiguration 运行流程: 方法运行之前,先去查询 Cache(缓存组件),按照 cacheNames 指定的名字去缓存中获取(CacheManager 先获取相应的缓存...去 Cache 中查找缓存的内容,使用一个 key(默认是方法的参数),其中 key 是按照某种策略生成的,默认是使用 SimpleKeyGenerator 生成的。
领取专属 10元无门槛券
手把手带您无忧上云