Skip to content

Commit a874554

Browse files
committed
1 parent 2e826a6 commit a874554

18 files changed

+685
-711
lines changed

dependencies-bom/pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
<jaxb_version>2.2.7</jaxb_version>
113113
<activation_version>1.2.0</activation_version>
114114
<hessian_lite_version>3.2.4</hessian_lite_version>
115+
<alibaba_spring_context_support_version>1.0.1</alibaba_spring_context_support_version>
115116
</properties>
116117

117118
<dependencyManagement>
@@ -358,6 +359,16 @@
358359
<artifactId>hessian-lite</artifactId>
359360
<version>${hessian_lite_version}</version>
360361
</dependency>
362+
363+
<!-- Alibaba extensions -->
364+
365+
<!-- Spring Context Support -->
366+
<dependency>
367+
<groupId>com.alibaba.spring</groupId>
368+
<artifactId>spring-context-support</artifactId>
369+
<version>${alibaba_spring_context_support_version}</version>
370+
</dependency>
371+
361372
<!-- Test lib -->
362373
<dependency>
363374
<groupId>org.apache.curator</groupId>

dubbo-config/dubbo-config-spring/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
See the License for the specific language governing permissions and
1515
limitations under the License.
1616
-->
17-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
17+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
18+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
1819
<modelVersion>4.0.0</modelVersion>
1920
<parent>
2021
<groupId>com.alibaba</groupId>
@@ -51,6 +52,10 @@
5152
<groupId>org.springframework</groupId>
5253
<artifactId>spring-context</artifactId>
5354
</dependency>
55+
<dependency>
56+
<groupId>com.alibaba.spring</groupId>
57+
<artifactId>spring-context-support</artifactId>
58+
</dependency>
5459
<dependency>
5560
<groupId>javax.servlet</groupId>
5661
<artifactId>javax.servlet-api</artifactId>

dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,16 @@
1616
*/
1717
package com.alibaba.dubbo.config.spring;
1818

19-
import com.alibaba.dubbo.config.ApplicationConfig;
20-
import com.alibaba.dubbo.config.ModuleConfig;
21-
import com.alibaba.dubbo.config.MonitorConfig;
22-
import com.alibaba.dubbo.config.ProtocolConfig;
23-
import com.alibaba.dubbo.config.ProviderConfig;
24-
import com.alibaba.dubbo.config.RegistryConfig;
25-
import com.alibaba.dubbo.config.ServiceConfig;
19+
import com.alibaba.dubbo.config.*;
2620
import com.alibaba.dubbo.config.annotation.Service;
21+
import com.alibaba.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
2722
import com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory;
2823
import org.springframework.aop.support.AopUtils;
2924
import org.springframework.beans.factory.BeanFactoryUtils;
3025
import org.springframework.beans.factory.BeanNameAware;
3126
import org.springframework.beans.factory.DisposableBean;
3227
import org.springframework.beans.factory.InitializingBean;
33-
import org.springframework.context.ApplicationContext;
34-
import org.springframework.context.ApplicationContextAware;
35-
import org.springframework.context.ApplicationListener;
28+
import org.springframework.context.*;
3629
import org.springframework.context.event.ContextRefreshedEvent;
3730
import org.springframework.context.support.AbstractApplicationContext;
3831

@@ -46,7 +39,9 @@
4639
*
4740
* @export
4841
*/
49-
public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware {
42+
public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean,
43+
ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware,
44+
ApplicationEventPublisherAware {
5045

5146
private static final long serialVersionUID = 213195494150089726L;
5247

@@ -60,6 +55,8 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
6055

6156
private transient boolean supportedApplicationListener;
6257

58+
private ApplicationEventPublisher applicationEventPublisher;
59+
6360
public ServiceBean() {
6461
super();
6562
this.service = null;
@@ -265,6 +262,34 @@ && getInterface() != null && getInterface().length() > 0
265262
}
266263
}
267264

265+
/**
266+
* Get the name of {@link ServiceBean}
267+
*
268+
* @return {@link ServiceBean}'s name
269+
* @since 2.6.5
270+
*/
271+
public String getBeanName() {
272+
return this.beanName;
273+
}
274+
275+
/**
276+
* @since 2.6.5
277+
*/
278+
@Override
279+
public void export() {
280+
super.export();
281+
// Publish ServiceBeanExportedEvent
282+
publishExportEvent();
283+
}
284+
285+
/**
286+
* @since 2.6.5
287+
*/
288+
private void publishExportEvent() {
289+
ServiceBeanExportedEvent exportEvent = new ServiceBeanExportedEvent(this);
290+
applicationEventPublisher.publishEvent(exportEvent);
291+
}
292+
268293
@Override
269294
public void destroy() throws Exception {
270295
// This will only be called for singleton scope bean, and expected to be called by spring shutdown hook when BeanFactory/ApplicationContext destroys.
@@ -280,4 +305,13 @@ protected Class getServiceClass(T ref) {
280305
}
281306
return super.getServiceClass(ref);
282307
}
308+
309+
/**
310+
* @param applicationEventPublisher
311+
* @since 2.6.5
312+
*/
313+
@Override
314+
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
315+
this.applicationEventPublisher = applicationEventPublisher;
316+
}
283317
}

dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AbstractAnnotationConfigBeanBuilder.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@
1616
*/
1717
package com.alibaba.dubbo.config.spring.beans.factory.annotation;
1818

19-
import com.alibaba.dubbo.config.AbstractInterfaceConfig;
20-
import com.alibaba.dubbo.config.ApplicationConfig;
21-
import com.alibaba.dubbo.config.ModuleConfig;
22-
import com.alibaba.dubbo.config.MonitorConfig;
23-
import com.alibaba.dubbo.config.RegistryConfig;
19+
import com.alibaba.dubbo.config.*;
2420
import org.apache.commons.logging.Log;
2521
import org.apache.commons.logging.LogFactory;
2622
import org.springframework.context.ApplicationContext;
@@ -34,6 +30,7 @@
3430

3531
/**
3632
* Abstract Configurable {@link Annotation} Bean Builder
33+
*
3734
* @since 2.5.7
3835
*/
3936
abstract class AbstractAnnotationConfigBeanBuilder<A extends Annotation, B extends AbstractInterfaceConfig> {
@@ -76,7 +73,7 @@ public final B build() throws Exception {
7673
configureBean(bean);
7774

7875
if (logger.isInfoEnabled()) {
79-
logger.info(bean + " has been built.");
76+
logger.info("The bean[type:" + bean.getClass().getSimpleName() + "] has been built.");
8077
}
8178

8279
return bean;

0 commit comments

Comments
 (0)