spring boot
文章平均质量分 82
牛奋lch
我是一只快乐的程序猿……
展开
-
spring boot解决第三方jar包依赖的问题
在我们的开发中,通过会依赖第三方的jar包,而这些jar包由于还处于测试或开发阶段,并没有放到maven库中,这个时候,如果我们还按照原来spring boot的方式打包的话,第三方jar包是打不进来的,所有很多时候,我们在本地测试,开发没问题,一部署到服务器上,就报ClassNotFound异常。示例如下:第三方jar包的引用方式: com.chhliu chhliu-sen原创 2017-08-11 18:41:48 · 7542 阅读 · 0 评论 -
Spring Boot整合jpa,Shiro进行权限管理
转:http://412887952-qq-com.iteye.com/blog/2299777本来想写一篇spring boot整合Shiro实现权限验证的文章,发现这篇写的非常不错,就直接借鉴了!(1). Shiro简单介绍Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、转载 2017-07-27 12:24:37 · 10552 阅读 · 11 评论 -
spring boot使用内嵌的tomcat解决不安全的HTTP方法安全漏洞
最近项目开发完毕,在进行安全测试的时候,爆出了一个中级安全漏洞--不安全的HTTP方法,如果对这个安全漏洞有不明白的地方,可以自行问度娘。1、传统Web项目的解决方案在不使用spring boot的情况下,有两种解决方案1、在过滤器中进行拦截,对于不是http安全的方法直接给前端返回错误信息;2、在tomcat的web.xml配置,对不安全的方法进行拦截。下面,我们重点说下第二种方案,因为原创 2017-08-04 11:47:07 · 11981 阅读 · 1 评论 -
spring boot整合redis,实现shiro的CacheManager
接着上一篇博客来讲:Spring Boot整合jpa,Shiro进行权限管理Shiro默认整合了EhCache,来实现缓存,如果我们想用redis替换EhCache来实现缓存怎么做了?我们可以从Shiro的源码来找到一些端倪。我们可以模拟EhCacheManager的实现方式,EhCacheManager类定义如下:public class EhCacheManager implement原创 2017-08-03 17:45:17 · 13811 阅读 · 2 评论 -
springboot整合Quartz实现动态配置定时任务
前言在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能。一、新建一个springboot工程,并添加依赖 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 run原创 2017-03-09 09:12:20 · 114637 阅读 · 141 评论 -
spring boot中统一异常处理
在前面的博客中,Spring Boot整合jpa,Shiro进行权限管理 异常都是直接返回到页面上,这样做既不安全,也不友好,所以在返回给页面之前,我们需要对异常信息进行统一的处理,该部分的处理思路和spring mvc的处理思路是一致的。下面,我们来对前面的示例进行改造,从而能够支持统一的异常处理。1、定义全局异常处理类@ControllerAdvicepublic class原创 2017-08-09 12:03:54 · 5076 阅读 · 0 评论 -
spring boot-执行Async任务时,使用自定义的线程池
在前面的博客中,http://blog.csdn.net/liuchuanhong1/article/details/54605697 我们使用了spring boot的异步操作,当时,我们使用的是默认的线程池,但是,如果我们想根据项目来定制自己的线程池了,下面就来说说,如何定制线程池!一、增加配置属性类package com.chhliu.springboot.async.con...原创 2017-03-20 20:16:01 · 34929 阅读 · 6 评论 -
spring boot整合Shiro实现单点登录
前面的博客中,我们说道了Shiro的两个最大的特点,认证和授权,而单点登录也是属于认证的一部分,默认情况下,Shiro已经为我们实现了和Cas的集成,我们加入集成的一些配置就ok了。1、加入shiro-cas包 org.apache.shiro shiro-cas 1.2.4原创 2017-08-07 17:35:31 · 43058 阅读 · 44 评论 -
spring boot-部署时报org.springframework.beans.factory.BeanCreationNotAllowedException异常
今天在本机测试的时候,一直报这个异常:org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration': Sin原创 2017-07-05 15:50:10 · 16947 阅读 · 6 评论 -
spring boot整合redis实现shiro的分布式session共享
我们知道,shiro是通过SessionManager来管理Session的,而对于Session的操作则是通过SessionDao来实现的,默认的情况下,shiro实现了两种SessionDao,分别为CachingSessionDAO和MemorySessionDAO,当我们使用EhCache缓存时,则是使用的CachingSessionDAO,不适用缓存的情况下,就会选择基于内存的Sessi原创 2017-08-07 08:34:41 · 18728 阅读 · 11 评论 -
使用spring事件驱动机制,实现权限信息的自动收集存库
最近在做权限管理,希望能够在容器初始化后,自动的将所有Controller上的url进行收集,并存放到权限表中,从而代替人工配置的方式。实现思路如下: spring事件驱动机制+注解来实现。spring事件驱动机制spring在容器初始化之后,会触发ContextRefreshedEvent等事件,只要实现了Application原创 2017-08-25 12:15:08 · 5236 阅读 · 6 评论 -
spring boot jpa-java.lang.IllegalArgumentException: Not a managed type异常问题解决方法
最近遇到一个问题:在生产中有两个模块,一个模块负责定时任务,并负责存库,另一个模块则负责读取数据库,并展示,由于是两个不同的模块,所以每个模块中都有一部分entity是公用的,导致整个系统的代码重复率偏高,所以决定将公共部分的entity提取出来,放到一个公共的模块当中,然后运行以前的代码,结果就抛了如下的异常:Caused by: java.lang.IllegalArgumentExcepti...原创 2017-07-02 12:03:37 · 17221 阅读 · 6 评论 -
spring boot--使用异步请求,提高系统的吞吐量
前言:在我们的实际生产中,常常会遇到下面的这种情况,某个请求非常耗时(大约5s返回),当大量的访问该请求的时候,再请求其他服务时,会造成没有连接使用的情况,造成这种现象的主要原因是,我们的容器(tomcat)中线程的数量是一定的,例如500个,当这500个线程都用来请求服务的时候,再有请求进来,就没有多余的连接可用了,只能拒绝连接。要是我们在请求耗时服务的时候,能够异步请求(请求到contro原创 2017-12-07 19:29:42 · 23912 阅读 · 4 评论 -
spring boot整合quartz实现多个定时任务
最近收到了很多封邮件,都是想知道spring boot整合quartz如何实现多个定时任务的,由于本人生产上并没有使用到多个定时任务,这里给个实现的思路。1、新建两个定时任务,如下:public class ScheduledJob implements Job{ @Override public void execute(JobExecutionContext cont原创 2017-11-15 18:22:24 · 10850 阅读 · 3 评论 -
spring boot--整合spring session实现session共享以及cookie丢失问题解决
spring session可以利用redis透明的存储并共享web应用的HttpSession,当结合spring boot使用时,更是大大的节省了我们整合的时间。1 添加pom依赖 org.springframework.boot spring-boot-starter-data-redis org.springframework.s原创 2017-11-06 14:49:24 · 28736 阅读 · 6 评论 -
spring boot整合JMS(ActiveMQ实现)
一、安装ActiveMQ具体的安装步骤,请参考我的另一篇博文:http://blog.csdn.net/liuchuanhong1/article/details/52057711二、新建spring boot工程,并加入JMS(ActiveMQ)依赖三、工程结构pom依赖如下:<project xmlns="http://maven.apache.org/POM原创 2017-01-18 18:55:21 · 81840 阅读 · 54 评论 -
springboot-加载自定义的properties文件
在我们的开发中,有很多配置文件是需要分开配置的,例如kafka.properties,amq.properties等,那这些自定义的配置文件,怎么加载到对应的类里面了,下面就来说说这个问题。在src/main/resources目录下新建一个config文件夹,用来存放我们的properties文件。目录结构如下:user.properties配置文件内容如下:com.chhl原创 2017-09-26 20:43:34 · 30253 阅读 · 3 评论 -
spring boot-同时使用jms的Queue(队列)和Topic(发布订阅)
前言前面有一篇博客讲到了spring boot整合jms的使用http://blog.csdn.net/liuchuanhong1/article/details/54603546但是最近遇到一个需求,需要同时使用jms的队列和topic,于是就有了下面的测试代码:消费者代码@Component // 必须加此注解,该类才会被作为Message Driven POJO使用pu原创 2017-05-25 19:52:23 · 7536 阅读 · 9 评论 -
spring boot中多环境配置支持
一、说明 在我们的日常开发中,生产环境的配置和测试环境的配置以及开发环境的配置基本上都是不相同的,每次到部署环境的时候,就需要手动的切换配置文件,如果在切换的过程中一不小心的话,就会出错,所以在开发中,一般会搞个配置文件检查的功能,来避免出错,而spring boot则充分考虑了这种情况,为开发人员提供了天然的多环境配置支持。二、增加properties配置文件1、applica原创 2017-01-23 17:10:40 · 4146 阅读 · 0 评论 -
spring boot整合Cucumber(BDD)
1、新建一个springboot工程工程结构如下:2、添加pom依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0原创 2017-08-29 18:23:32 · 6905 阅读 · 2 评论 -
spring cloud-前端跨域问题的解决方案
当我们需要将spring boot以restful接口的方式对外提供服务的时候,如果此时架构是前后端分离的,那么就会涉及到跨域的问题,那怎么来解决跨域的问题了,一般是在spring boot的主类中,增加一个CorsFilter@Beanpublic CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource so原创 2017-03-15 21:22:50 · 26495 阅读 · 10 评论 -
springboot构建自己的starter
前言下面我们来通过示例来构建自己的starter pom并完成自动配置,以此来更深入的理解spring boot的工作原理。需求该starter提供PersonService,并实现自动配置PersonService一、新建一个Maven工程工程pom依赖如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns原创 2017-02-13 22:24:33 · 11392 阅读 · 3 评论 -
Hystrix系列-2-HystrixObservableCommand的使用
在前面一节中HystrixCommand的使用,下面,我们来介绍HystrixObservableCommand的使用。HystrixObservableCommand的作用仍然是用来做资源隔离的,后面会介绍和HystrixCommand的区别,先看用法,示例代码如下:/** * HystrixObservableCommand使用示例 * 只需要集成HystrixObservableCo原创 2017-06-25 14:46:24 · 6211 阅读 · 1 评论 -
spring boot集成druid数据库连接池,实现对数据库的监控
一、加入druid依赖 com.alibaba druid 1.0.27 二、在application.properties配置文件中加入druid配置# 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20#原创 2017-02-13 20:34:07 · 9519 阅读 · 1 评论 -
spring boot整合redis实现缓存机制
一、引入redis和jpaapplication.properties配置如下:############################################################################################jpa的配置########################################################原创 2017-02-13 20:33:08 · 6422 阅读 · 0 评论 -
使用Redis模拟简单分布式锁,解决单点故障的问题
需求描述: 最近做一个项目,项目中有一个功能,每天定时(凌晨1点)从数据库中获取需要爬虫的URL,并发送到对应的队列中,然后客户端监听对应的队列,然后执行任务。如果同时部署多个定时任务节点的话,每个节点都会去查数据库,然后将查到的url发送到队列中,这样的话,客户端就会执行很多重复的任务,如果不同时部署多个节点的话,又存在单点故障的风险。要解决这种类似的问题,可以使用分布式锁来实现,当节原创 2017-01-22 15:12:37 · 6271 阅读 · 1 评论 -
使用RestTemplate消费spring boot的Restful服务
一、RestTemplate说明 RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。前面的博客中http://blog.csdn.net/liuchuanhong1/article/details/53537874,已经使用Jersey客户端来实现了消费spring原创 2017-01-20 14:49:27 · 56768 阅读 · 9 评论 -
springboot整合H2内存数据库,实现单元测试与数据库无关性
一、新建spring boot工程新建工程的时候,需要加入JPA,H2依赖二、工程结构pom文件依赖如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m原创 2017-01-20 12:19:08 · 25126 阅读 · 2 评论 -
spring boot整合redis主从sentinel
一、一主二从三sentinel配置1、master:127.0.0.1:63792、slave1:127.0.0.1:63803、slave2:127.0.0.1:63814、sentinel1:127.0.0.1:263795、sentinel2:127.0.0.1:264796、sentinel3:127.0.0.1:265797、监听的主机名:mymaster原创 2017-01-18 14:56:10 · 77953 阅读 · 25 评论 -
mock测试spring boot的CRUD服务
controller如下:@RestControllerpublic class GithubController { @Autowired private GitHubRepository repository; @Autowired private GithubEntityManager manager; /** * attention:用户名可能存在多个 *原创 2016-12-06 23:06:24 · 5951 阅读 · 1 评论 -
spring boot整合jpa构建微服务以及服务调用
一、Maven构建项目1、访问http://start.spring.io/2、选择构建项目的基本信息,参考下图: 3、点击Generate Project下载项目压缩包4、下载后解压到本地,并以Import -> Existing Maven Projects的方式,导入eclipse中5、导入后,项目结构如下: 二、加入web,jpa依赖原创 2016-12-06 19:12:14 · 6049 阅读 · 1 评论 -
spring boot热启动,热部署
一、模板的热部署 在spring boot里,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,想通过刷新是得不到修改后的页面的,我们可以通过修改application.properties配置文件来达到模板热部署的功能,properties配置文件修改如下:Thymeleaf的配置:spring.thymeleaf.cache=falseFreeMarker的配置:spr原创 2016-12-14 18:49:04 · 12799 阅读 · 0 评论 -
spring boot启动报Unable to start EmbeddedWebApplicationContext问题解决方案
异常全文如下:org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start Embed原创 2017-03-02 16:17:27 · 49802 阅读 · 2 评论 -
spring boot-aop的使用
一、添加aop starter依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.原创 2017-02-14 22:32:02 · 7174 阅读 · 0 评论 -
spring boot-分布式定时任务中,异步执行时JMS无法重新投递消息
这篇博客是紧接着上篇博客来说的http://blog.csdn.net/liuchuanhong1/article/details/64126346在上篇博客中,我们基本上实现了分布式的定时任务架构的搭建,但是,当我们异步消费消息中间件中的消息的时候,如果执行的过程中抛了异常,那么,我们无法做到消息重试,示例如下:@Component // 必须加此注解,该类才会被作为Message原创 2017-03-20 19:56:03 · 17351 阅读 · 5 评论 -
spring boot-整合CAS Client实现单点登陆验证
实现方式一:使用第三方的starter1、依赖的jar net.unicon.cas cas-client-autoconfig-support 1.4.0-GA 2、增加配置文件cas.server-url-prefix=http://127.0.0.1cas.server-login-ur原创 2017-06-13 18:07:05 · 35557 阅读 · 10 评论 -
spring boot-使用Filter实现Header认证
前言假设客户端在http请求中,已经加入了Header的认证信息,例如:HttpPost post = new HttpPost("http://localhost:8990/sendMail"); StringEntity entity = new StringEntity(json, "utf-8"); entity.setContentType("applicatio原创 2017-05-23 12:02:36 · 26525 阅读 · 10 评论 -
spring boot-实现WebService(CXF实现)的拦截器(Interceptor)
拦截器(Interceptor)是CXF功能最主要的扩展点,可以在不对核心模块进行修改的情况下,动态添加很多功能。拦截器和JAX-WS Handler、Filter的功能类似,当服务被调用时,就会创建一个拦截器链(Interceptor Chain),拦截器链在服务输入(IN)或输出(OUT)阶段实现附加功能。拦截器可以在客户端,也可以在服务端添加。当客户端发起一个WebService请求原创 2017-05-22 19:12:58 · 10157 阅读 · 0 评论 -
spring boot-使用redis的Keyspace Notifications实现定时任务队列
前言:最近项目中有一个需求:需要将执行失败的指令存起来,隔5分钟之后,再取出来执行一次,看到这个需求描述,我第一时间想到了Redis的Keyspace Notifications机制。当然也可以使用jdk自带的DelayQueue来实现,或者更进一步,使用ScheduledThreadPoolExecutor池来实现。由于系统是分布式的,所以考虑使用Redis来实现。关于Redis的Key原创 2017-04-12 21:05:23 · 14853 阅读 · 3 评论 -
spring boot异步(Async)任务调度
前言在我前面的博客中,多处使用了@Async来实现异步任务调度,具体请参考博客:http://blog.csdn.net/liuchuanhong1/article/details/52326578http://blog.csdn.net/liuchuanhong1/article/details/52042520在没有使用spring boot之前,我们的做法是在配置文件中定义一原创 2017-01-18 22:59:14 · 11304 阅读 · 0 评论