GH-2225: Native changes required

Remove autorwiring application context in BindableFunctionProxyFactory.
Use bean factory directly instead.

Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2225
This commit is contained in:
Soby Chacko
2021-09-21 18:17:38 -04:00
parent 7cd4bb86d6
commit 5171bbe0ac
2 changed files with 10 additions and 6 deletions

View File

@@ -60,7 +60,7 @@ public class BindableProxyFactory extends AbstractBindableProxyFactory
private Object proxy;
private BeanFactory beanFactory;
protected BeanFactory beanFactory;
public BindableProxyFactory(Class<?> type) {
super(type);

View File

@@ -16,11 +16,13 @@
package org.springframework.cloud.stream.function;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.stream.binder.PollableMessageSource;
import org.springframework.cloud.stream.binding.BindableProxyFactory;
import org.springframework.cloud.stream.binding.BoundTargetHolder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.SubscribableChannel;
@@ -43,7 +45,7 @@ import org.springframework.util.CollectionUtils;
*
* @since 3.0
*/
class BindableFunctionProxyFactory extends BindableProxyFactory {
class BindableFunctionProxyFactory extends BindableProxyFactory implements ApplicationContextAware {
private final int inputCount;
@@ -55,10 +57,8 @@ class BindableFunctionProxyFactory extends BindableProxyFactory {
private final boolean pollable;
@Autowired
private GenericApplicationContext context;
BindableFunctionProxyFactory(String functionDefinition, int inputCount, int outputCount, StreamFunctionProperties functionProperties) {
this(functionDefinition, inputCount, outputCount, functionProperties, false);
}
@@ -75,7 +75,7 @@ class BindableFunctionProxyFactory extends BindableProxyFactory {
@Override
public void afterPropertiesSet() {
populateBindingTargetFactories(context.getBeanFactory());
populateBindingTargetFactories(beanFactory);
Assert.notEmpty(BindableFunctionProxyFactory.this.bindingTargetFactories,
"'bindingTargetFactories' cannot be empty");
@@ -171,4 +171,8 @@ class BindableFunctionProxyFactory extends BindableProxyFactory {
.createOutput(name), true));
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.context = (GenericApplicationContext) applicationContext;
}
}