Mr.Cai

想吃抻面。

Spring条件Bean

0x01 SpEL Spring 3.0开始支持SpEL。 public class MyDao { @Value("#{systemProperties['os.arch'].equals('x86') ? winDataSource : unixDataSource}") private DataSource datasource; ... } 0x02 Profile ...

Spring Boot Auto-Configuration

0x01 Auto-Configuration开启方式 SpringBootApplication和EnableAutoConfiguration注解都可以开启Auto-Configuration。 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootC...

基于Spring Security OAuth2客户端模式的授权认证

0x01 目的 网上关于使用Spring Security OAuth2的客户端模式实现的授权认证服务的资料比较少。寥寥几篇博文也只是使用了简单的InMemory,而在生产环境中,我们要使用mysql这样的持久化的存储来存储一些授权信息。 所以本文实现一个基于OAuth2客户端模式的授权认证服务器,ClientDetails存在mysql中,Token的信息存在redis中。 0x02 a...

Spring获取动态代理中的代理对象

0x01 从动态代理中获取 // 代码来自 http://jinnianshilongnian.iteye.com/blog/1613222 import java.lang.reflect.Field; import org.springframework.aop.framework.AdvisedSupport; import org.springframework.aop...

写Spring测试用例时遇到的问题解决办法

0x01 集成PowerMock 目的 在测试中很多时候需要去mock一个对象或者spy某个对象中的几个方法,这个时候PowerMock是一个比较好的选择。 问题 集成PowerMock的时候因为Junit的Runner只能设置一个,所以不知道该设置PowerMockRunner还是SpringRunner。如果设置了PowerMockRunner,虽然可以使用mock和spy功能,但是...

谈谈Maven中的dependencyManagement

0x01 dependencyManagement Maven使用dependencyManagement元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement元素。使用pom.xml中的dependencyManagement元素能让 所有在子项目中引用一个依赖而不用显式的列出版本号。Maven会沿着父子层次向上走,直...

Spring Cloud Dalston接入consul 1.0的那些故事

0x01 consul简介 一个服务管理中心。 支持多数据中心下,分布式高可用的,服务发现和配置共享。 consul支持健康检查,允许存储键值对。 一致性协议采用 Raft 算法,用来保证服务的高可用。 成员管理和消息广播 采用GOSSIP协议,支持ACL访问控制。 0x02 版本兼容性 先贴一个github上Spring cloud的issue: spring-clo...

Spring Cloud Feign的loadbalancerkey扩展

0x01 netflix-loadbalancer 在微服务的水平扩展和微服务的状态性上的权衡,考虑微服务有状态,在客户端做静态hash。但是随之而来的问题就是ribbon balancer并不支持这种静态hash的策略选择。代码如下: // spring-cloud-netflix-core org.springframework.cloud.netflix.feign.ribbon....

Spring Boot资源加载

0x01 fat-jar <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> 在使用maven打包的时候,在配置文件加入上面这段配置会开启s...

Java8 Lambda

0x01 foreach 遍历执行 // output 123 List<Integer> list = Arrays.asList(1, 2, 3); list.stream().forEach(System.out::print); 0x02 map 将流中的A元素转换成B // output 1, 2, 3, List<Integer> list = Ar...