Soul源码分析 —— 可以复用的代码技巧
对bean的操作
更灵活的生成bean和排序
@ConditionalOnProperty(name = "soul.cross.enabled", havingValue = "true")
@Order(-100)
@ConditionalOnMissingBean(value = SoulResult.class, search = SearchStrategy.ALL)
@ConditionalOnClass(AlibabaDubboPlugin.class)
用Util类获取bean
@Bean
public ApplicationContextAware applicationContextAware() {
return new SoulApplicationContextAware();
}
/**
* The type Soul application context aware.
*/
public static class SoulApplicationContextAware implements ApplicationContextAware {
@Override
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
SpringBeanUtils.getInstance().setCfgContext((ConfigurableApplicationContext) applicationContext);
}
}
public final class SpringBeanUtils {
private static final SpringBeanUtils INSTANCE = new SpringBeanUtils();
private ConfigurableApplicationContext cfgContext;
private SpringBeanUtils() {
}
public static SpringBeanUtils getInstance() {
return INSTANCE;
}
public <T> T getBean(final Class<T> type) {
return cfgContext.getBean(type);
}
public