1818
1919import 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 ;
2322import org .springframework .beans .factory .BeanNameAware ;
2423import org .springframework .beans .factory .config .AbstractFactoryBean ;
24+ import org .springframework .context .ApplicationContext ;
25+ import org .springframework .context .ApplicationContextAware ;
2526import org .springframework .context .ApplicationEventPublisher ;
2627import org .springframework .context .ApplicationEventPublisherAware ;
2728import org .springframework .context .SmartLifecycle ;
5657 * @since 2.0.5
5758 */
5859public 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