Spring Boot集成Spring Cloud实战

LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code,Keep progress,make a better result.

目录

概述

实现思路分析

1.核心逻辑

2。主控制类

相关工具如下:

ctory;
/*存储创建类定义对象的容器/
private Map<String, Class<?>> beanDefinationFactory;
/*存储beanElement对象容器/
private Map<String, Element> beanEleMap;
/*存储bean的scope属性容器/
private Map<String, String> beanScopeMap;
}
4,定义有参的构造方法,在构造方法中初始化容器,并调用初始化方法#
/*有参的构造方法,在创建此类实例时需要指定xml文件路径/
public ClassPathXmlApplicationContext(String xmlPath) {
//初始化容器
singletonBeanFactory = new ConcurrentHashMap<String, Object>();
beanDefinationFactory = new ConcurrentHashMap<String, Class<?>>();
beanEleMap = new ConcurrentHashMap<String, Element>();
beanScopeMap = new ConcurrentHashMap<String, String>();
//调用初始化方法
init(xmlPath);
}
init初始化方法内容如下,每一行我都加了详细的注释,请直接看代码

/**

  • 初始化方法,在创建ClassPathXmlApplicationContext对象时初始化容器,
  • 并解析xml配置文件,获取bean元素,在运行时动态创建对象,并为对象的属性赋值,
  • 最后把对象存放在容器中以供获取
  • @param xmlPath 配置文件路径
    /
    private void init(String xmlPath) {
    /
    • 使用dom4j技术读取xml文档
    • 首先创建SAXReader对象
      */
      SAXReader reader = new SAXReader();
      try {
      //获取读取xml配置文件的输入流
      InputStream is = getClass().getClassLoader().getResourceAsStream(xmlPath);
      //读取xml,该操作会返回一个Document对象
      Document document = reader.read(is);
      //获取文档的根元素
      Element rootElement = document.getRootElement();
      //获取根元素下所有的bean元素,elements方法会返回元素的集合
      List beanElements = rootElement.elements(“bean”);
      //遍历元素集合
      for (Element beanEle : beanElements) {
      //获取bean的id值,该值用于作为key存储于Map集合中
      String beanId = beanEle.attributeValue(“id”);
      //将beanElement对象存入map中,为对象设置属性值时使用
      beanEleMap.put(beanId, beanEle);
      //获取bean的scope值
      String beanScope = beanEle.attributeValue(“scope”);
      //如果beanScope不等于null,将bean的scope值存入map中方便后续使用
      if(beanScope!=null){
      beanScopeMap.put(beanId, beanScope);
      }
      //获取bean的class路径
      String beanClassPath = beanEle.attributeValue(“class”);
      //利用反射技术根据获得的beanClass路径得到类定义对象
      Class<?> cls = Class.forName(beanClassPath);
      //如果反射获取的类定义对象不为null,则放入工厂中方便创建其实例对象
      if(cls!=null){
      beanDefinationFactory.put(beanId, cls);
      }
      }
      } catch (Exception e) {
      e.printStackTrace();
      }
      }

以上为创建ClassPathXmlApplicationContext对象时自动启用的初始化方法,要想获取对象则需要使用getBean方法,代码如下

分析:

小结:

主要讲述了一些Spring boot 和Spring Cloud集成,里面有许多不足,请大家指正,基本微服务的框架图完成了

参考资料和推荐阅读

1.链接: 参考资料.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值