我们不造轮子,只是轮子的搬运工。...(其实最好是造轮子,造比别人好的轮子) 开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子【easypoi...】,下面介绍下“轮子”的使用。...导入文件保存路径 type int 1 导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本 width double 10 列宽 height double 10 列高,后期打算统一使用...导出时间设置,如果字段是Date类型则不需要设置 数据库如果是string类型,这个需要设置这个数据库格式,用以转换时间格式输出 numFormat String "" 数字格式化,参数是Pattern,使用的对象是
前文介绍了 rabbitMQ 消息持久化、TTL、消息优先级、生产者确认机制和消费者确认机制,接下来我们学习关于rabbitMQ的其他特性及在springboot中的使用 ListenerContainer...的使用 在消费端,我们的消费监听器是运行在 监听器容器之中的( ListenerContainer ),springboot 给我们提供了两个监听器容器 SimpleMessageListenerContainer...rabbit 中的事务机制和 callable 机制是互斥的,也就是说只有 spring.rabbitmq.template.mandatory=false 的时候才能使用。...但是在 springboot 我们大可不必去手动提交和回滚,可以使用 spring 的声明式事务,上代码: @Component @Order(1) public class RabbitConfig...returnCallback); // rabbitTemplate.setConfirmCallback(confirmCallback); // 设置事务环境,使得可以使用
在spring-boot中使用pageHelper插件 添加依赖 com.github.pagehelper pagehelper 4.2.0 如果在spring-boot...pageInfo = new PageInfo(carList); model.addAttribute("list",carList); //将分页信息存入model对象,以便前台对象使用...nextPage:下一页 firstPage:第一页 lastPage:最后一页 但是需要注意的是firstPage是获取到导航条上的第一页,lastPage是获取到导航条上的最后一页,并不是真正的最后一页...navigateFirstPage; } @Deprecated // 请用getPages()来获取最后一页, 此函数获取的是导航条上的最后一页, 容易产生歧义.
@ConfigurationProperties注解的作用是可以根据一个前缀将配置文件的属性映射成一个POJO实体类,只要属性名一致就能自动注入进去,使用起来非常方便,这一点容易与@Configuration...注解混淆,@Configuration也可以注解一个配置类,不一样的是它需要为每个属性再次声明绑定的字段,稍微复杂,所以推荐使用@ConfigurationProperties注解。...下面看一个简单的例子,我有一个配置文件,下面包含了多种数据结构的属性,如下: ?...现在我们就可以通过@ConfigurationProperties注解将其映射成一个配置类,这样使用起来就非常方便了: ?...可以看到,已经成功注入,使用起来非常简洁,不在像spring里面还得通过一大堆xml来注入各种数据结构到Bean里面,使得代码精简了不少。
postHandle-------- ---------afterCompletion-------- HandlerInterceptor HandlerInterceptor是springMVC项目中的拦截器...,它拦截的目标是请求的地址,比MethodInterceptor先执行。...HandlerInterceptor拦截的是请求地址,所以针对请求地址做一些验证、预处理等操作比较合适。
对于 queue ,exchange 在创建的时候都会提供一个参数用以设置是否持久化,而如果使用它们对应的建造者而不是new,就能很清晰的看到是怎么指定持久化的: // 创建 queue 指定为非持久化...每次消息写入后,如果没有后续写入请求,则会直接将已写入的消息刷到磁盘:使用Erlang的receive x after 0实现,只要进程的信箱里没有消息,则产生一个timeout消息,而timeout会触发刷盘操作...message : "+replyCode); System.out.println("描述:"+replyText); System.out.println("消息使用的交换器...exchange : "+exchange); System.out.println("消息使用的路由键 routing : "+routingKey); } } @Component...中消费端确认默认是 NONE 自动确认,我们需要设置成手动确认 manual 或者根据情况确认 AUTO 才能使用这一功能: # 这里的配置是指向容器 SimpleMessageListenerContainer
使用aop在项目中进行日志记录,很适合aop的应用场景 使用aop进行日志记录 环境搭建 创建一个spring boot项目,并引入spring aop 项目中的pom.xml内容为 <dependencies.../** * 日志类型 * * @return */ String type() default ""; /** * 业务的名称...if (controllerLog == null) { return; } // 获取当前的用户...BussinessLog注解的方法上,如果有其他需求也可以自定义 这里还是用了@EnableAsync和@Async注解,使其在打日志的时候是异步的 由于异步交给线程池处理,在线程中不能直接获取spring...的实例 * @throws org.springframework.beans.BeansException */ @SuppressWarnings("unchecked"
看到这个标题,相信不少人会感到疑惑,回忆你们自己的场景会发现,在Spring的项目中很少有使用多线程处理任务的,没错,大多数时候我们都是使用Spring MVC开发的web项目,默认的Controller...,Service,Dao组件的作用域都是单实例,无状态,然后被并发多线程调用,那么如果我想使用多线程处理任务,该如何做呢?...比如如下场景: 使用spring-boot开发一个监控的项目,每个被监控的业务(可能是一个数据库表或者是一个pid进程)都会单独运行在一个线程中,有自己配置的参数,总结起来就是: (1)多实例(多个业务...,每个业务相互隔离互不影响) (2)有状态(每个业务,都有自己的配置参数) 如果是非spring-boot项目,实现起来可能会相对简单点,直接new多线程启动,然后传入不同的参数类即可,在spring的项目中...,由于Bean对象是spring容器管理的,你直接new出来的对象是没法使用的,就算你能new成功,但是bean里面依赖的其他组件比如Dao,是没法初始化的,因为你饶过了spring,默认的spring
工程简介 2种异步example void没有返回值 有返回值 延伸阅读 spring boot 自带 @Async 注解,只要加到想要异步的方法上即可。...有个小坑,就是只这样还是同步的service,还需要在main方法上加上 @EnableAsync 注解。...只有get()方法需要等待当前的异步线程执行完毕,几个异步线程是并行执行的。...类似get()方法的还有isDone(),因为get()已经包括了isDone(),所以不需要使用isDone()做判断了。...全部代码在: https://github.com/backendcloud/example/tree/master/spring-boot/async/demo/
Spring-boot 集成druid数据库连接池,Spring-boot实现druid的动态数据源,Spring-boot实现定时任务schedule,spring-boot集成mybatis ?...spring-boot druid mybatis schedule dynamic-datasource jpa 本系列是spring-boot相关的一些列子,比如spring-boot集成druid...,以及druid的动态数据源切换, spring-boot 集成mybatis,spring-boot集成定时器等等 1、spring-boot集成druid数据库连接池 详情查看项目 spring-boot-with-druid...2、spring-boot实现druid数据库连接池的动态数据源切换, 详情查看项目 spring-boot-with-dynamic-datasource 3、spring-boot实现定时任务 详情查看项目...7、spring-boot集成dubbo,所有配置均使用application.properties 详情查看项目 spring-boot-with-dubbo https://github.com/
spring-boot使用aop进行多数据源切换 多数据源 环境搭建 创建一个spring boot项目,并引入druid mysql aop等相关依赖 <...Target({ElementType.METHOD}) public @interface TargetDataSource { String name() default ""; } 使用...核心方法为multiDataSource(),在这里把相关数据源加入一个map中,方便切换 这里依赖了druid的配置类和一个多数据源的配置类,我们需要在yml里编写合适的配置,也需要创建合适的类接受自定义配置...,由于这里使用了多数据源,所以druid的配置需要我们自己配置,不能使用druid提供的spring boot starter 相应的配置文件如下 spring: datasource:...清除数据源类型 */ public static void clearDataSourceType() { contextHolder.remove(); } } 使用
简介 Spring-boot 中为我们提供了一套非常简单易用的开发框架,本文将记录Spring-boot 中如何连接MySql。由于笔者是第一次接触后端开发,如有问题,欢迎指正。...除了以上命令,我们还需要知道当前MySql的一些信息。...这些信息都是非常重要的。 pom.xml 在spring-boot中,我们使用pom.xml来管理我们的依赖。我们要操作MySql当然需要依赖一些第三方组件。...完成以上代码后,我们就可以在localhost中,看到我们从MySql中查询的结果啦。 至此,一个简单的数据库demo就完成啦。...小结 jdbc只是spring-boot提供的一个执行简单sql语句的引挚。当我们真正进行数据库相关的开发时,jdbc是不够用的。 本文只是为了记录MySql环境的配置。
输出需要设置的用户和密码 ? 你相信吗,仅仅只有15.4MB ?...窗口窗与在xshell不同,通过shift+v无法黏贴,并且在输入界面鼠标右键无法使用。...windows的maven本地库目录,maven本地库在linux中对应的目录是/mnt/d/dev_mavenRepository/ settings.xml的内容如下 cat /usr/maven/...maven.aliyun.com/repository/public 2.1.2.打包和启动spring-boot...,java程序使用了近1G的内存 ?
周末在家研究spring-boot,参考github上的一些开源项目,整了一个rest微服务框架,取之于民,用之于民,在github上开源了,地址如下: https://github.com/yjmyzz...mybatis-generator 1.3.2生成,生成脚本见src/mybatis-generator/gen.sh web容器 内嵌tomcat容器,默认开启gzip压缩 日志及监控 所有controller层的参数利用
RabbitProperties :封装了 rabbitMq的配置, * 4....@EnableRabbit + RabbitListener 监听消息 */ @EnableRabbit //开启基于注解的rabbitmq模式 @SpringBootApplication public..., Binding.DestinationType.QUEUE,"ampq.exchage","amqp",null));//绑定信息 System.out.println("队列与交换机的绑定创建成功...需要自己构造一个,定义消息体内容和消息头 //rabbitTemplate.send(exchange,routingKey,message); //obj 默认当成消息体,只需要传入要发送的对象...book.setAuthor("罗贯中3333"); rabbitTemplate.convertAndSend("amq.direct","direct",book); } /** * 接收消息队列中的数据
上一篇文章《springboot(十九):使用Spring Boot Actuator监控应用》介绍了Spring Boot Actuator的使用,Spring Boot Actuator提供了对单个...Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。...他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger...监控微服务 如果我们使用的是单个Spring Boot应用,就需要在每一个被监控的应用中配置Admin Server的地址信息;如果应用都注册在Eureka中就不需要再对每个应用进行配置,Spring...当然这只是最基本的邮件监控,在实际的使用过程中,需要根据我们的情况对邮件告警内容进行自定义,比如监控堆内存的使用情况,当到达一定比例的时候进行告警等。
在本文章中,我们将会解决在 Spring Boot 运行测试的时候,得到 NoSuchMethodError 和 NoClassDefFoundError 的 JUnit 错误。...5.3.2 的版本,想升级到 JUnit 5.4.0 版本,当你再次运行测试的时候,我们还是会得到 NoClassDefFoundError 和 NoSuchMethodError 错误。...我们的项目使用的是 JUnit (5.7.1) 版本进行编译的,但是在运行的时候使用的 (5.3.2) 这个版本来运行的。...Boot 中来修正 NoSuchMethodError 和 NoClassDefFoundError 错误,这个错误在 Spring Boot 中属于比较常见的错误。...结论 在本文章中,我们对 Spring 常见的 NoSuchMethodError 和 NoClassDefFoundError JUnit 错误进行了一些阐述,并且针对这个问题提供了解决方案。
application.properties中加上spring.jpa.properties.hibernate.default_schema=[user],由于oracle不同表空间下可以有同名表,而表的访问都是...user.table,这样来区分不同表空间同名表造成的问题。...springboot + jpa 出现 failed to lazily initialize a collection of role错误 这个错误一般是在使用@ManyToMany...artifactId>nekohtml 1.9.21 在spring使用缓存时出现异常...,EL1008E 检测是否有使用类似@CacheAbel这样的注解,同时其key的值不要为纯字符串,可以为SpEL表达式,如果是字符串写法应该是:"'key'"
前言 本文作为入门级的DEMO,完全按照官网实例演示; 项目目录结构 Maven 依赖 org.springframework.boot....and() .formLogin() .loginPage("/login") //定义登录的页面....permitAll() .and() .logout() //默认的"...(AuthenticationManagerBuilder auth) throws Exception { //在内存中注入一个用户名为anyCode密码为password并且身份为USER的对象
jetty 9 嵌入式开发时,启动正常,但是页面一浏览就报错如下: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted...()Z 原因:jetty 9 依赖的servlet-api是3.X版本,如果项目中还有其它第3方开源库隐式依赖了2.x版本的servlet-api,就会报这个错。...解决办法:gradle项目中,gradle dependencies 分析所有的依赖项,找出依赖低版本servlet-api的项目,将其移除即可。
领取专属 10元无门槛券
手把手带您无忧上云