java类org.springframework.beans.factory.config.BeanExpressionContext的实例源码

DefaultListableBeanFactoryTests.java 文件源码 项目:spring4-understanding 阅读 21 收藏 0 点赞 0 评论 0
@Test
public void testExpressionInStringArray() {
    DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
    BeanExpressionResolver beanExpressionResolver = mock(BeanExpressionResolver.class);
    when(beanExpressionResolver.evaluate(eq("#{foo}"), Matchers.any(BeanExpressionContext.class)))
            .thenReturn("classpath:/org/springframework/beans/factory/xml/util.properties");
    bf.setBeanExpressionResolver(beanExpressionResolver);

    RootBeanDefinition rbd = new RootBeanDefinition(PropertiesFactoryBean.class);
    MutablePropertyValues pvs = new MutablePropertyValues();
    pvs.add("locations", new String[]{"#{foo}"});
    rbd.setPropertyValues(pvs);
    bf.registerBeanDefinition("myProperties", rbd);
    Properties properties = (Properties) bf.getBean("myProperties");
    assertEquals("bar", properties.getProperty("foo"));
}
JaxRsClientProxyFactoryBean.java 文件源码 项目:spring-jax-rs-client-proxy 阅读 22 收藏 0 点赞 0 评论 0
/**
 * Retrieves the service url.
 *
 * @return the service url
 */
private String getServiceUrl() {

    try {
        if (!serviceUrl.isEmpty()) {

            ConfigurableBeanFactory beanFactory = getBeanFactory();
            if(beanFactory != null) {
                return (String) beanFactory.getBeanExpressionResolver()
                        .evaluate(serviceUrl, new BeanExpressionContext(beanFactory, null));
            }
            return serviceUrl;
        }

        return applicationContext.getBean(serviceUrlProvider)
                .getServiceUrl();
    } catch (BeansException e) {
        throw new IllegalStateException("The service url hasn't been specified and " +
                "no ServiceUrlProvider has been registered in application context.", e);
    }
}
AutoPropertiesFactoryBean.java 文件源码 项目:spring-autoproperties 阅读 19 收藏 0 点赞 0 评论 0
private Object resolveValue(Method method) {
    Value val = AnnotationUtils.findAnnotation(method, Value.class);
    if (val != null) {
        if (LOG.isDebugEnabled()) {
            LOG.debug(String.format("Resolving @Value annotation on %s with key %s",
                    method.getName(), val.value()));
        }
        ConfigurableBeanFactory beanFactory = (ConfigurableBeanFactory) getBeanFactory();
        String strValue = beanFactory.resolveEmbeddedValue(val.value());
        BeanExpressionResolver resolver = beanFactory.getBeanExpressionResolver();

        Object unconvertedResult = resolver.evaluate(strValue, new BeanExpressionContext(beanFactory, null));
        TypeConverter converter = beanFactory.getTypeConverter();
        return converter.convertIfNecessary(unconvertedResult, method.getReturnType());
    }
    String message = "Method %s on interface %s must be annotated with @Value for auto-properties to work!";
    throw new AutoPropertiesException(String.format(message, method.getName(), method.getDeclaringClass().getName()));
}
ApplicationMetricsProperties.java 文件源码 项目:spring-cloud-stream 阅读 23 收藏 0 点赞 0 评论 0
private Map<String, Object> buildExportProperties() {
    Map<String, Object> props = new HashMap<>();
    if (!ObjectUtils.isEmpty(this.properties)) {
        Map<String, String> target = bindProperties();

        BeanExpressionResolver beanExpressionResolver = ((ConfigurableApplicationContext) applicationContext)
                .getBeanFactory().getBeanExpressionResolver();
        BeanExpressionContext expressionContext = new BeanExpressionContext(
                ((ConfigurableApplicationContext) applicationContext).getBeanFactory(), null);
        for (Entry<String, String> entry : target.entrySet()) {
            if (isMatch(entry.getKey(), this.properties, null)) {
                String stringValue = ObjectUtils.nullSafeToString(entry.getValue());
                Object exportedValue = null;
                if (stringValue != null) {
                    exportedValue = stringValue.startsWith("#{")
                            ? beanExpressionResolver.evaluate(
                                    environment.resolvePlaceholders(stringValue), expressionContext)
                            : environment.resolvePlaceholders(stringValue);
                }

                props.put(entry.getKey(), exportedValue);
            }
        }
    }
    return props;
}
QueueMessageHandler.java 文件源码 项目:spring-cloud-aws 阅读 22 收藏 0 点赞 0 评论 0
private String[] resolveName(String name) {
    if (!(getApplicationContext() instanceof ConfigurableApplicationContext)) {
        return wrapInStringArray(name);
    }

    ConfigurableApplicationContext applicationContext = (ConfigurableApplicationContext) getApplicationContext();
    ConfigurableBeanFactory configurableBeanFactory = applicationContext.getBeanFactory();

    String placeholdersResolved = configurableBeanFactory.resolveEmbeddedValue(name);
    BeanExpressionResolver exprResolver = configurableBeanFactory.getBeanExpressionResolver();
    if (exprResolver == null) {
        return wrapInStringArray(name);
    }
    Object result = exprResolver.evaluate(placeholdersResolved, new BeanExpressionContext(configurableBeanFactory, null));
    if (result instanceof String[]) {
        return (String[]) result;
    } else if (result != null) {
        return wrapInStringArray(result);
    } else {
        return wrapInStringArray(name);
    }
}
ZeebeExpressionResolver.java 文件源码 项目:spring-zeebe 阅读 24 收藏 0 点赞 0 评论 0
@Override
public void setBeanFactory(final BeanFactory beanFactory) throws BeansException
{
    this.beanFactory = beanFactory;
    if (beanFactory instanceof ConfigurableListableBeanFactory)
    {
        this.resolver = ((ConfigurableListableBeanFactory) beanFactory).getBeanExpressionResolver();
        this.expressionContext = new BeanExpressionContext((ConfigurableListableBeanFactory) beanFactory, null);
    }
}
AnnotationMethodHandlerAdapter.java 文件源码 项目:spring4-understanding 阅读 25 收藏 0 点赞 0 评论 0
@Override
public void setBeanFactory(BeanFactory beanFactory) {
    if (beanFactory instanceof ConfigurableBeanFactory) {
        this.beanFactory = (ConfigurableBeanFactory) beanFactory;
        this.expressionContext = new BeanExpressionContext(this.beanFactory, new RequestScope());
    }
}
AnnotationMethodHandlerAdapter.java 文件源码 项目:spring4-understanding 阅读 20 收藏 0 点赞 0 评论 0
@Override
public void setBeanFactory(BeanFactory beanFactory) {
    if (beanFactory instanceof ConfigurableBeanFactory) {
        this.beanFactory = (ConfigurableBeanFactory) beanFactory;
        this.expressionContext = new BeanExpressionContext(this.beanFactory, new RequestScope());
    }
}
DataDictionary.java 文件源码 项目:kc-rice 阅读 20 收藏 0 点赞 0 评论 0
/**
 * Returns a property value for the bean with the given name from the dictionary.
 *
 * @param beanName id or name for the bean definition
 * @param propertyName name of the property to retrieve, must be a valid property configured on
 * the bean definition
 * @return Object property value for property
 */
public Object getDictionaryBeanProperty(String beanName, String propertyName) {
    Object bean = ddBeans.getSingleton(beanName);
    if (bean != null) {
        return ObjectPropertyUtils.getPropertyValue(bean, propertyName);
    }

    BeanDefinition beanDefinition = ddBeans.getMergedBeanDefinition(beanName);

    if (beanDefinition == null) {
        throw new RuntimeException("Unable to get bean for bean name: " + beanName);
    }

    PropertyValues pvs = beanDefinition.getPropertyValues();
    if (pvs.contains(propertyName)) {
        PropertyValue propertyValue = pvs.getPropertyValue(propertyName);

        Object value;
        if (propertyValue.isConverted()) {
            value = propertyValue.getConvertedValue();
        } else if (propertyValue.getValue() instanceof String) {
            String unconvertedValue = (String) propertyValue.getValue();
            Scope scope = ddBeans.getRegisteredScope(beanDefinition.getScope());
            BeanExpressionContext beanExpressionContext = new BeanExpressionContext(ddBeans, scope);

            value = ddBeans.getBeanExpressionResolver().evaluate(unconvertedValue, beanExpressionContext);
        } else {
            value = propertyValue.getValue();
        }

        return value;
    }

    return null;
}
StandardBeanExpressionResolver.java 文件源码 项目:class-guard 阅读 18 收藏 0 点赞 0 评论 0
public Object evaluate(String value, BeanExpressionContext evalContext) throws BeansException {
    if (!StringUtils.hasLength(value)) {
        return value;
    }
    try {
        Expression expr = this.expressionCache.get(value);
        if (expr == null) {
            expr = this.expressionParser.parseExpression(value, this.beanExpressionParserContext);
            this.expressionCache.put(value, expr);
        }
        StandardEvaluationContext sec = this.evaluationCache.get(evalContext);
        if (sec == null) {
            sec = new StandardEvaluationContext();
            sec.setRootObject(evalContext);
            sec.addPropertyAccessor(new BeanExpressionContextAccessor());
            sec.addPropertyAccessor(new BeanFactoryAccessor());
            sec.addPropertyAccessor(new MapAccessor());
            sec.addPropertyAccessor(new EnvironmentAccessor());
            sec.setBeanResolver(new BeanFactoryResolver(evalContext.getBeanFactory()));
            sec.setTypeLocator(new StandardTypeLocator(evalContext.getBeanFactory().getBeanClassLoader()));
            ConversionService conversionService = evalContext.getBeanFactory().getConversionService();
            if (conversionService != null) {
                sec.setTypeConverter(new StandardTypeConverter(conversionService));
            }
            customizeEvaluationContext(sec);
            this.evaluationCache.put(evalContext, sec);
        }
        return expr.getValue(sec);
    }
    catch (Exception ex) {
        throw new BeanExpressionException("Expression parsing failed", ex);
    }
}
SniffySpringConfiguration.java 文件源码 项目:sniffy 阅读 21 收藏 0 点赞 0 评论 0
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
    this.beanFactory = (ConfigurableBeanFactory) beanFactory;
    resolver = this.beanFactory.getBeanExpressionResolver();
    expressionContext = new BeanExpressionContext(this.beanFactory, null);
    typeConverter = this.beanFactory.getTypeConverter();
}
ExtendableAnnotationMethodHandlerAdapter.java 文件源码 项目:jresplus 阅读 20 收藏 0 点赞 0 评论 0
public void setBeanFactory(BeanFactory beanFactory) {
    if (beanFactory instanceof ConfigurableBeanFactory) {
        this.beanFactory = (ConfigurableBeanFactory) beanFactory;
        this.expressionContext = new BeanExpressionContext(
                this.beanFactory, new RequestScope());
    }
}
AmazonEc2InstanceUserTagsFactoryBeanAwsTest.java 文件源码 项目:spring-cloud-aws 阅读 18 收藏 0 点赞 0 评论 0
@Test
public void testGetUserProperties() throws Exception {

    Assert.assertEquals("tagv1", this.context.getBeanFactory().getBeanExpressionResolver().
            evaluate("#{instanceData['tag1']}", new BeanExpressionContext(this.context.getBeanFactory(), null)));
    Assert.assertEquals("tagv2", this.context.getBeanFactory().getBeanExpressionResolver().
            evaluate("#{instanceData['tag2']}", new BeanExpressionContext(this.context.getBeanFactory(), null)));
    Assert.assertEquals("tagv3", this.context.getBeanFactory().getBeanExpressionResolver().
            evaluate("#{instanceData['tag3']}", new BeanExpressionContext(this.context.getBeanFactory(), null)));
    Assert.assertEquals("tagv4", this.context.getBeanFactory().getBeanExpressionResolver().
            evaluate("#{instanceData['tag4']}", new BeanExpressionContext(this.context.getBeanFactory(), null)));
}
SendToHandlerMethodReturnValueHandler.java 文件源码 项目:spring-cloud-aws 阅读 19 收藏 0 点赞 0 评论 0
private String resolveName(String name) {
    if (!(this.beanFactory instanceof ConfigurableBeanFactory)) {
        return name;
    }

    ConfigurableBeanFactory configurableBeanFactory = (ConfigurableBeanFactory) this.beanFactory;

    String placeholdersResolved = configurableBeanFactory.resolveEmbeddedValue(name);
    BeanExpressionResolver exprResolver = configurableBeanFactory.getBeanExpressionResolver();
    if (exprResolver == null) {
        return name;
    }
    Object result = exprResolver.evaluate(placeholdersResolved, new BeanExpressionContext(configurableBeanFactory, null));
    return result != null ? result.toString() : name;
}
DataDictionary.java 文件源码 项目:rice 阅读 21 收藏 0 点赞 0 评论 0
/**
 * Returns a property value for the bean with the given name from the dictionary.
 *
 * @param beanName id or name for the bean definition
 * @param propertyName name of the property to retrieve, must be a valid property configured on
 * the bean definition
 * @return Object property value for property
 */
public Object getDictionaryBeanProperty(String beanName, String propertyName) {
    Object bean = ddBeans.getSingleton(beanName);
    if (bean != null) {
        return ObjectPropertyUtils.getPropertyValue(bean, propertyName);
    }

    BeanDefinition beanDefinition = ddBeans.getMergedBeanDefinition(beanName);

    if (beanDefinition == null) {
        throw new RuntimeException("Unable to get bean for bean name: " + beanName);
    }

    PropertyValues pvs = beanDefinition.getPropertyValues();
    if (pvs.contains(propertyName)) {
        PropertyValue propertyValue = pvs.getPropertyValue(propertyName);

        Object value;
        if (propertyValue.isConverted()) {
            value = propertyValue.getConvertedValue();
        } else if (propertyValue.getValue() instanceof String) {
            String unconvertedValue = (String) propertyValue.getValue();
            Scope scope = ddBeans.getRegisteredScope(beanDefinition.getScope());
            BeanExpressionContext beanExpressionContext = new BeanExpressionContext(ddBeans, scope);

            value = ddBeans.getBeanExpressionResolver().evaluate(unconvertedValue, beanExpressionContext);
        } else {
            value = propertyValue.getValue();
        }

        return value;
    }

    return null;
}
BeanExpressionContextAccessor.java 文件源码 项目:lams 阅读 20 收藏 0 点赞 0 评论 0
@Override
public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
    return ((BeanExpressionContext) target).containsObject(name);
}
BeanExpressionContextAccessor.java 文件源码 项目:lams 阅读 20 收藏 0 点赞 0 评论 0
@Override
public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException {
    return new TypedValue(((BeanExpressionContext) target).getObject(name));
}
BeanExpressionContextAccessor.java 文件源码 项目:lams 阅读 25 收藏 0 点赞 0 评论 0
@Override
public Class<?>[] getSpecificTargetClasses() {
    return new Class<?>[] {BeanExpressionContext.class};
}
WxContextUtils.java 文件源码 项目:FastBootWeixin 阅读 21 收藏 0 点赞 0 评论 0
/**
 * 本来想用Prepared的,但是发现prepared没有地方发布这个事件,可恶
 *
 * @param applicationReadyEvent
 */
@Override
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
    configurableBeanFactory = applicationReadyEvent.getApplicationContext().getBeanFactory();
    expressionContext = new BeanExpressionContext(configurableBeanFactory, null);
}
BeanExpressionContextAccessor.java 文件源码 项目:spring4-understanding 阅读 22 收藏 0 点赞 0 评论 0
@Override
public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
    return ((BeanExpressionContext) target).containsObject(name);
}
BeanExpressionContextAccessor.java 文件源码 项目:spring4-understanding 阅读 20 收藏 0 点赞 0 评论 0
@Override
public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException {
    return new TypedValue(((BeanExpressionContext) target).getObject(name));
}
BeanExpressionContextAccessor.java 文件源码 项目:spring4-understanding 阅读 22 收藏 0 点赞 0 评论 0
@Override
public Class<?>[] getSpecificTargetClasses() {
    return new Class<?>[] {BeanExpressionContext.class};
}
BeanExpressionContextAccessor.java 文件源码 项目:my-spring-cache-redis 阅读 19 收藏 0 点赞 0 评论 0
@Override
public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
    return ((BeanExpressionContext) target).containsObject(name);
}
BeanExpressionContextAccessor.java 文件源码 项目:my-spring-cache-redis 阅读 19 收藏 0 点赞 0 评论 0
@Override
public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException {
    return new TypedValue(((BeanExpressionContext) target).getObject(name));
}
BeanExpressionContextAccessor.java 文件源码 项目:my-spring-cache-redis 阅读 22 收藏 0 点赞 0 评论 0
@Override
public Class<?>[] getSpecificTargetClasses() {
    return new Class<?>[] {BeanExpressionContext.class};
}
SpelDynamicParameterExpressionResolver.java 文件源码 项目:java-restify 阅读 20 收藏 0 点赞 0 评论 0
public SpelDynamicParameterExpressionResolver(ConfigurableBeanFactory beanFactory) {
    this.beanFactory = beanFactory;
    this.resolver = beanFactory.getBeanExpressionResolver();
    this.context = new BeanExpressionContext(beanFactory, null);
}
BeanExpressionContextAccessor.java 文件源码 项目:spring 阅读 20 收藏 0 点赞 0 评论 0
@Override
public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
    return ((BeanExpressionContext) target).containsObject(name);
}
BeanExpressionContextAccessor.java 文件源码 项目:spring 阅读 18 收藏 0 点赞 0 评论 0
@Override
public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException {
    return new TypedValue(((BeanExpressionContext) target).getObject(name));
}
BeanExpressionContextAccessor.java 文件源码 项目:spring 阅读 18 收藏 0 点赞 0 评论 0
@Override
public Class<?>[] getSpecificTargetClasses() {
    return new Class<?>[] {BeanExpressionContext.class};
}
EmbeddedPlaceholderResolver.java 文件源码 项目:sdcct 阅读 24 收藏 0 点赞 0 评论 0
@Override
public void afterPropertiesSet() throws Exception {
    this.beanExprResolver = this.beanFactory.getBeanExpressionResolver();
    this.beanExprContext = new BeanExpressionContext(this.beanFactory, null);
}


问题


面经


文章

微信
公众号

扫码关注公众号