Skip to content

Commit 7ced027

Browse files
garyrussellartembilan
authored andcommitted
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 # Conflicts: # spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionFactoryFactoryBean.java
1 parent 127f683 commit 7ced027

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionFactoryFactoryBean.java

+19-12
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818

1919
import java.util.concurrent.Executor;
2020

21-
import org.springframework.beans.factory.BeanFactory;
22-
import org.springframework.beans.factory.BeanFactoryAware;
21+
import org.springframework.beans.BeansException;
2322
import org.springframework.beans.factory.BeanNameAware;
2423
import org.springframework.beans.factory.config.AbstractFactoryBean;
24+
import org.springframework.context.ApplicationContext;
25+
import org.springframework.context.ApplicationContextAware;
2526
import org.springframework.context.ApplicationEventPublisher;
2627
import org.springframework.context.ApplicationEventPublisherAware;
2728
import org.springframework.context.SmartLifecycle;
@@ -56,7 +57,7 @@
5657
* @since 2.0.5
5758
*/
5859
public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<AbstractConnectionFactory> implements SmartLifecycle, BeanNameAware,
59-
BeanFactoryAware, ApplicationEventPublisherAware {
60+
ApplicationEventPublisherAware, ApplicationContextAware {
6061

6162
private volatile AbstractConnectionFactory connectionFactory;
6263

@@ -74,7 +75,7 @@ public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<Abstrac
7475

7576
private volatile boolean soTcpNoDelay;
7677

77-
private volatile int soLinger = -1; // don't set by default
78+
private volatile int soLinger = -1; // don't set by default
7879

7980
private volatile boolean soKeepAlive;
8081

@@ -122,7 +123,8 @@ public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean<Abstrac
122123

123124
private volatile ApplicationEventPublisher applicationEventPublisher;
124125

125-
private volatile BeanFactory beanFactory;
126+
127+
private ApplicationContext applicationContext;
126128

127129

128130
public TcpConnectionFactoryFactoryBean() {
@@ -133,23 +135,23 @@ public TcpConnectionFactoryFactoryBean(String type) {
133135
}
134136

135137
@Override
136-
public final void setBeanFactory(BeanFactory beanFactory) {
137-
this.beanFactory = beanFactory;
138+
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
139+
this.applicationContext = applicationContext;
138140
}
139141

140142
@Override
141143
public Class<?> getObjectType() {
142144
return this.connectionFactory != null ? this.connectionFactory.getClass() :
143-
this.type == null ? AbstractConnectionFactory.class :
144-
isServer() ? AbstractServerConnectionFactory.class :
145-
isClient() ? AbstractClientConnectionFactory.class :
146-
AbstractConnectionFactory.class;
145+
this.type == null ? AbstractConnectionFactory.class :
146+
isServer() ? AbstractServerConnectionFactory.class :
147+
isClient() ? AbstractClientConnectionFactory.class :
148+
AbstractConnectionFactory.class;
147149
}
148150

149151
@Override
150152
protected AbstractConnectionFactory createInstance() throws Exception {
151153
if (!this.mapperSet) {
152-
this.mapper.setBeanFactory(this.beanFactory);
154+
this.mapper.setBeanFactory(getBeanFactory());
153155
}
154156
if (this.usingNio) {
155157
if (isServer()) {
@@ -188,6 +190,11 @@ protected AbstractConnectionFactory createInstance() throws Exception {
188190
this.connectionFactory = connectionFactory;
189191
}
190192
}
193+
this.connectionFactory.setBeanFactory(getBeanFactory());
194+
if (this.applicationContext != null) {
195+
this.connectionFactory.setApplicationContext(this.applicationContext);
196+
}
197+
this.connectionFactory.afterPropertiesSet();
191198
return this.connectionFactory;
192199
}
193200

0 commit comments

Comments
 (0)