使用Spring的ApplicationContext动态初始化serviceImpl,动态调用业务实现类serviceImpl

业务多变的情况:一个接口,多个实现类的情况下动态初始化service实现类:

serviceImpl注解:

// 代表旧的实现类
@Service(“接口类名+Impl_old”)
// 代表新的实现类
@Service(“接口类名+Impl_new”)
// 其它实现类,在新的模式下扩展,方法传入逻辑处理标识等方式
@Service(“接口类名+Impl_new2019”)
@Service(“接口类名+Impl_new2020”)
@Service(“接口类名+Impl_new2021”)

	// spring注入ApplicationContext
	@Autowired
	private ApplicationContext context;

	/***
	 *动态初始化Service
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public  <T> T getReportService(Class<T> clazz) {
		try {
			// 逻辑处理你需要实例化的类
			boolean is_new = true;
			String beanName = null;
			if (is_new) {
				beanName = clazz.getSimpleName() + "Impl_new";
			} else {
				beanName = clazz.getSimpleName() + "Impl_old";
			}
			return (T) context.getBean(beanName, clazz);
		} catch (Exception e) {
			System.out.println("请传入正确的ServiceID和参数");
			e.printStackTrace();
		}
		return (T) clazz;
	}

业务中遇到的问题:欢迎交流。可能描述不清楚。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值