Fix TcpConnectionFactory FactoryBean
- bean factory and application context were not injected - `afterPropertiesSet()` was not called **cherry-pick to all supported branches** # Conflicts: # spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionFactoryFactoryBean.java
This commit is contained in:
committed by
Artem Bilan
parent
0cbea82946
commit
cb8b4bca52
@@ -18,10 +18,11 @@ package org.springframework.integration.ip.config;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.BeanFactoryAware;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
import org.springframework.beans.factory.config.AbstractFactoryBean;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.ApplicationEventPublisherAware;
|
||||
import org.springframework.context.Lifecycle;
|
||||
@@ -58,7 +59,7 @@ import org.springframework.util.Assert;
|
||||
* @since 2.0.5
|
||||
*/
|
||||
public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<AbstractConnectionFactory>
|
||||
implements Lifecycle, BeanNameAware, BeanFactoryAware, ApplicationEventPublisherAware {
|
||||
implements Lifecycle, BeanNameAware, ApplicationEventPublisherAware, ApplicationContextAware {
|
||||
|
||||
private volatile AbstractConnectionFactory connectionFactory;
|
||||
|
||||
@@ -76,7 +77,7 @@ public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<Abstrac
|
||||
|
||||
private volatile boolean soTcpNoDelay;
|
||||
|
||||
private volatile int soLinger = -1; // don't set by default
|
||||
private volatile int soLinger = -1; // don't set by default
|
||||
|
||||
private volatile boolean soKeepAlive;
|
||||
|
||||
@@ -126,7 +127,8 @@ public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<Abstrac
|
||||
|
||||
private volatile ApplicationEventPublisher applicationEventPublisher;
|
||||
|
||||
private volatile BeanFactory beanFactory;
|
||||
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
|
||||
public TcpConnectionFactoryFactoryBean() {
|
||||
@@ -137,23 +139,23 @@ public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<Abstrac
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setBeanFactory(BeanFactory beanFactory) {
|
||||
this.beanFactory = beanFactory;
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
this.applicationContext = applicationContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getObjectType() {
|
||||
return this.connectionFactory != null ? this.connectionFactory.getClass() :
|
||||
this.type == null ? AbstractConnectionFactory.class :
|
||||
isServer() ? AbstractServerConnectionFactory.class :
|
||||
isClient() ? AbstractClientConnectionFactory.class :
|
||||
AbstractConnectionFactory.class;
|
||||
this.type == null ? AbstractConnectionFactory.class :
|
||||
isServer() ? AbstractServerConnectionFactory.class :
|
||||
isClient() ? AbstractClientConnectionFactory.class :
|
||||
AbstractConnectionFactory.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractConnectionFactory createInstance() throws Exception {
|
||||
if (!this.mapperSet) {
|
||||
this.mapper.setBeanFactory(this.beanFactory);
|
||||
this.mapper.setBeanFactory(getBeanFactory());
|
||||
}
|
||||
if (this.usingNio) {
|
||||
if (isServer()) {
|
||||
@@ -194,6 +196,11 @@ public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<Abstrac
|
||||
this.connectionFactory = connectionFactory;
|
||||
}
|
||||
}
|
||||
this.connectionFactory.setBeanFactory(getBeanFactory());
|
||||
if (this.applicationContext != null) {
|
||||
this.connectionFactory.setApplicationContext(this.applicationContext);
|
||||
}
|
||||
this.connectionFactory.afterPropertiesSet();
|
||||
return this.connectionFactory;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user