private Environment environmentForImage(int maxWidth, boolean invert) {
Map<String, Object> specification = new HashMap<>();
specification.put("banner.image.width", maxWidth);
specification.put("banner.image.invert", invert);
ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
proxyFactoryBean.setInterfaces(Environment.class);
proxyFactoryBean.addAdvice((MethodInterceptor) invocation -> {
String containsProperty = "containsProperty";
String getProperty = "getProperty";
List<String> toHandle = Arrays.asList(containsProperty, getProperty);
String methodName = invocation.getMethod().getName();
if (toHandle.contains(methodName)) {
String key = String.class.cast(invocation.getArguments()[0]);
if (methodName.equals(containsProperty)) {
return (specification.containsKey(key) || this.environment.containsProperty(key));
}
if (methodName.equals(getProperty)) {
return specification.getOrDefault(key, this.environment.getProperty(key));
}
}
return invocation.getMethod().invoke(this.environment, invocation.getArguments());
});
return Environment.class.cast(proxyFactoryBean.getObject());
}
BootifulBannersServiceApplication.java 文件源码
java
阅读 27
收藏 0
点赞 0
评论 0
项目:bootiful-banners
作者:
评论列表
文章目录