Skip to content

Commit

Permalink
Merge pull request apache#1016, Annotation Enhancemane
Browse files Browse the repository at this point in the history
* Add compatibility for Spring 3.2.x to resolve
* Add final to BEAN_NAME field
* @EnableDubboConfig & @EnableDubbo
  • Loading branch information
mercyblitz authored and chickenlj committed Dec 12, 2017
1 parent 1f2dcbe commit d528433
Show file tree
Hide file tree
Showing 40 changed files with 3,802 additions and 374 deletions.
6 changes: 6 additions & 0 deletions dubbo-config/dubbo-config-spring/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,12 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,9 @@
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.common.utils.ConcurrentHashSet;
import com.alibaba.dubbo.common.utils.ReflectUtils;
import com.alibaba.dubbo.config.AbstractConfig;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ConsumerConfig;
import com.alibaba.dubbo.config.ModuleConfig;
import com.alibaba.dubbo.config.MonitorConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.ProviderConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.alibaba.dubbo.config.*;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.config.annotation.Service;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,10 @@
*/
package com.alibaba.dubbo.config.spring;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ConsumerConfig;
import com.alibaba.dubbo.config.ModuleConfig;
import com.alibaba.dubbo.config.MonitorConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.*;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory;
import com.alibaba.dubbo.config.support.Parameter;

import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,9 @@
*/
package com.alibaba.dubbo.config.spring;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ModuleConfig;
import com.alibaba.dubbo.config.MonitorConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.ProviderConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.alibaba.dubbo.config.*;
import com.alibaba.dubbo.config.annotation.Service;
import com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory;

import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.alibaba.dubbo.config.spring.beans.factory.annotation;

import com.alibaba.dubbo.common.utils.Assert;
import com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfigBinding;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.PropertyValues;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.validation.DataBinder;

import java.util.Arrays;

/**
* Dubbo Config Binding {@link BeanPostProcessor}
*
* @author <a href="mailto:[email protected]">Mercy</a>
* @see EnableDubboConfigBinding
* @see DubboConfigBindingRegistrar
* @since 2.5.8
*/
public class DubboConfigBindingBeanPostProcessor implements BeanPostProcessor {

private final Log log = LogFactory.getLog(getClass());

/**
* Binding Bean Name
*/
private final String beanName;

/**
* Binding {@link PropertyValues}
*/
private final PropertyValues propertyValues;


/**
* @param beanName Binding Bean Name
* @param propertyValues {@link PropertyValues}
*/
public DubboConfigBindingBeanPostProcessor(String beanName, PropertyValues propertyValues) {
Assert.notNull(beanName, "The name of bean must not be null");
Assert.notNull(propertyValues, "The PropertyValues of bean must not be null");
this.beanName = beanName;
this.propertyValues = propertyValues;
}

@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

if (beanName.equals(this.beanName)) {
DataBinder dataBinder = new DataBinder(bean);
// TODO ignore invalid fields by annotation attribute
dataBinder.setIgnoreInvalidFields(true);
dataBinder.bind(propertyValues);
if (log.isInfoEnabled()) {
log.info("The properties of bean [name : " + beanName + "] have been binding by values : "
+ Arrays.asList(propertyValues.getPropertyValues()));
}
}

return bean;

}


@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}

}
Loading

0 comments on commit d528433

Please sign in to comment.