BootifulBannersServiceApplication.java 文件源码

java
阅读 27 收藏 0 点赞 0 评论 0

项目:bootiful-banners 作者:
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());
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号