项目上线少量spring代码热更新解决方案

场景:公司上线的权限系统涉及的有一个功能:使用其它平台的认证,如果通过。我们的平台也算认证通过。公司同一个产品可能有多家公司在用,每家的认证平台也不一样,认证方式不一样,数据格式也不一样。在以上两种情况出现的时候,还要保证公司产品保持标准化,以便客户后面升级。这样就比较麻烦了。按理讲,这种情况就属于客户定制版本。升级也是按照自制版本升级。标准产品里的新功能要去每一个定制产品里做合并。...
摘要由CSDN通过智能技术生成

场景:

公司上线的权限系统涉及的有一个功能:

  1. 使用其它平台的认证,如果通过。我们的平台也算认证通过。
  2. 公司同一个产品可能有多家公司在用,每家的认证平台也不一样,认证方式不一样,数据格式也不一样。
  3. 在以上两种情况出现的时候,还要保证公司产品保持标准化,以便客户后面升级。

这样就比较麻烦了。按理讲,这种情况就属于客户定制版本。升级也是按照自制版本升级。标准产品里的新功能要去每一个定制产品里做合并。

在这种各个客户要各种功能的情况越来越多,标准版本要合并到各定制版本的工作量越来越大。所以思考出以下解决方案。

  1. 统一功能的接口;
  2. 为各现场做不同的实现;
  3. 做一个配置,表明是哪个实现;
  4. 把实现类注入到Spring中,以便使用.

下面给出一个目前做出来效果比较好的具体例子:

  1. 登录这个功能的通用接口
public interface AdLoginService {
   

	public boolean adLogin(String userName, String password, String url);
}
  1. 这个接口功能的不同实现类:
    a. 通用实现
@Service
public class AdLoginServiceGeneralImpl implements AdLoginService{
   
	
	@Autowired
	private MConfig mConfig;
	

	@Override
	public boolean adLogin(String userName, String password, String url) {
   
		// String adPath = String.format(config.getADPathtmpl(), username);
		String adPath = String.format(mConfig.get("sys.config.ADPathtmpl"), userName);
		Hashtable<String, String> HashEnv = new Hashtable<String, String>();
		HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
		HashEnv.put(Context.SECURITY_PRINCIPAL, adPath);
		HashEnv.put(Context.SECURITY_CREDENTIALS, password);
		HashEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
		HashEnv.put("com.sun.jndi.ldap.connect.timeout", "3000");
		// HashEnv.put(Context.PROVIDER_URL, config.getADUrl());
		HashEnv.put(Context.PROVIDER_URL, url);
		try {
   
			DirContext ctx 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值