GLUE依赖注入逻辑优化,支持别名注入;from:shirokumacafe@github

This commit is contained in:
xueli.xue 2017-02-24 22:02:46 +08:00
parent d95277dfa5
commit 4cf65ebdb2
2 changed files with 14 additions and 2 deletions

View File

@ -709,6 +709,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
- 5、升级数据库连接池c3p0版本 - 5、升级数据库连接池c3p0版本
- 6、执行器log4j配置优化去除无效属性 - 6、执行器log4j配置优化去除无效属性
- 7、底层代码重构和逻辑优化以及CleanCode - 7、底层代码重构和逻辑优化以及CleanCode
- 8、GLUE依赖注入逻辑优化支持别名注入
#### 规划中 #### 规划中

View File

@ -8,6 +8,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.AnnotationUtils;
@ -76,15 +77,25 @@ public class GlueFactory implements ApplicationContextAware {
// with bean-id, bean could be found by both @Resource and @Autowired, or bean could only be found by @Autowired // with bean-id, bean could be found by both @Resource and @Autowired, or bean could only be found by @Autowired
if (AnnotationUtils.getAnnotation(field, Resource.class) != null) { if (AnnotationUtils.getAnnotation(field, Resource.class) != null) {
try { try {
Resource resource = AnnotationUtils.getAnnotation(field, Resource.class);
if (resource.name()!=null && resource.name().length()>0){
fieldBean = applicationContext.getBean(resource.name());
} else {
fieldBean = applicationContext.getBean(field.getName()); fieldBean = applicationContext.getBean(field.getName());
}
} catch (Exception e) { } catch (Exception e) {
} }
if (fieldBean==null ) { if (fieldBean==null ) {
fieldBean = applicationContext.getBean(field.getType()); fieldBean = applicationContext.getBean(field.getType());
} }
} else if (AnnotationUtils.getAnnotation(field, Autowired.class) != null) { } else if (AnnotationUtils.getAnnotation(field, Autowired.class) != null) {
Qualifier qualifier = AnnotationUtils.getAnnotation(field, Qualifier.class);
if (qualifier!=null && qualifier.value()!=null && qualifier.value().length()>0) {
fieldBean = applicationContext.getBean(qualifier.value());
} else {
fieldBean = applicationContext.getBean(field.getType()); fieldBean = applicationContext.getBean(field.getType());
} }
}
if (fieldBean!=null) { if (fieldBean!=null) {
field.setAccessible(true); field.setAccessible(true);