com.biz.common.serviceloader.ApplicationContextAwareServiceLoaderImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biz-all Show documentation
Show all versions of biz-all Show documentation
BizX 是一个灵活而高效的业务开发框架, 其中也有很多为业务开发所需要的工具类的提供。
The newest version!
package com.biz.common.serviceloader;
import com.biz.common.bean.BizXBeanUtils;
import com.biz.common.utils.Common;
import lombok.extern.slf4j.Slf4j;
/**
* 实现了服务加载器的特定逻辑,利用Spring框架的ApplicationContext来加载服务。
* 此实现类继承自{@link AbstractServiceLoaderProvider},提供了特定于应用程序上下文的服务加载机制。
*
* 该类通过Spring的应用程序上下文来加载服务实例,使得服务的加载与Spring框架集成。
* 使用{@link BizXBeanUtils#getBean(Class)}方法获取指定类型的Bean实例。
*
* @author francis
* @since 1.0.1
* @version 1.0.1
*/
@Slf4j
public class ApplicationContextAwareServiceLoaderImpl extends AbstractServiceLoaderProvider {
/**
* 加载指定类别的服务实例。
* 本方法利用{@link BizXBeanUtils#getBean(Class)}方法从Spring应用程序上下文中获取指定类型的bean实例。
* 如果找不到对应的bean,将返回null。
*
* @param tClass 服务的类别,用于从应用程序上下文中获取对应的bean。
* @param 服务的类型。
* @return 类别为tClass的bean实例,如果找不到则返回null。
*/
@Override
protected T load(Class> tClass) {
// 输入验证
if (tClass == null) {
log.warn("The input class is null, return null instead.");
return null;
}
try {
// 尝试获取bean实例
Object bean = BizXBeanUtils.getBean(tClass);
// 类型安全的转换
return Common.to(tClass.cast(bean));
} catch (ClassCastException e) {
log.error("Failed to cast the bean to the expected type: {}", tClass.getName(), e);
throw e;
} catch (Exception e) {
// 捕获其他潜在异常,例如NoSuchBeanDefinitionException
log.error("Error loading bean for class: {}", tClass.getName(), e);
throw e;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy