当前位置: 首页 > 网络应用技术

从进入到熟练2-Destepscope范围和用法的SpringBatch

时间:2023-03-07 20:58:55 网络应用技术

  在此之前,让我们谈谈IOC容器中几种豆的范围:

  目的是,启动作业实例时底部单元的参数(RPW或步骤)可以灵活地修改或实现,因为系统中可能存在多个作业实例,并且与每个作业实例相对应的参数是不同的。需要在步骤中获得工作参数/stepcontext/jobcontext,因此您需要自定义范围以使其与步骤的生命周期保持一致。

  使用注释。然后阶跃必须是@bean

  3.1大多数场景是Spel表达式。使用@Value获取JobParamter/stepContext/jobContext 3.2 Spel参考bean 3.3系统属性3.4计算符号

  原因:查看代码

  获得配置文件的内容。不在步骤中的特定内容。因此,您可以直接在参数bean中使用@value。您也可以直接在配置中。

  如果在JobParam参数中@value怎么办?那么您必须制作@stepscope

  StepScope实现了BeanFactoryPostProcessor。BPP的引入是实例化之前的扩展。此处是注册到弹簧容器的步骤

  获取bean时,AbstractBeanFactory#dogetBean.Juding bean不是mbd.issingleton(),而不是mbd.isprotype(),如果是自定义,

  mbd.getScope()。

  如何获得?stepscope#get(String,ObjectFactory) - >这将获得stepContext内容。

  stepContext = getContext() - >实际上,它实际上是直接从threadlocal.get stepcontext获得的

  然后,我们可以看到已经获得了这个StepsynchronizationManager。我将注册?

  AbstractStep#在step.ecute doexecute的摘要类中执行(stepexecution);先前的方法doexecutionRegistration

  将stepexecution添加到threadLocal中。可以将其视为螺纹插座(实际上,有一个可以保存多个stepexecution!!,与步骤设置步骤兼容。)。)。

  实际上,它可以在这里回答。但是还有另一个问题。

  额外(@Value在该阶段如何获得价值):

  在Springboot期间,还有两个重要的过程。如下:1扫描,在beanfactory上注册了容器中的bean,就像信息注册一样。2实例和这些扫描的豆的初始化。

  分析处于第二阶段。用户可以通过BEAN操作的接口方法可以在BEAN初始化之前和之后操作BEAN。正如Javadoc所说,其重要的实施类别是注射中注释的注入功能。以下是呼叫链

  让我们简要介绍该图上几个类的角色。

  AbstractAutowireCapableBeanFactory:提供bean创建,属性填充,自动组件,初始HU.Supporport自动组装构造器,该属性是根据名称和类型组装的。接口定义的方法已实现。

  AutoWirdAnotitItinPonpostProcessor:组装的成员变量,setter方法,bean中的任意配置方法。更典型的是注释和注释。

  注射甲麦:类的注入元数据可以由类或属性的属性使用,该类别或属性用于AutoWirdAnotionOnonPostProcesor类。

  AutowiredFieldEllement:是的,一个私人内部类,继承,描述注释字段。

  StringValueresolver:一个接口定义处理字符串值。只有一种接口方法可以用于求解位置字符串。本文中的主要实现类是通过该方法中的LAMDA表达式定义的。

  PropertySourcesPropertyResolver:属性资源处理器,主要功能是在属性资源中获得配置键值对。

  propertyPlaceholderHelper:一个用占位符处理字符串的工具类。$ {name}字符串的字符串可以由用户在工具类的帮助下提供的值代替。复制通过实例或(内部定义的接口定义)。

  propertyplaceholderholderconfigurerresolver:上一行中提到的接口的实现类是类的私人内部类。外部类的方法在实现方法中调用。

  定义jakcssybinscope

  注入Jackssybinscope

  引用

  没有引用

  测试

  结果

  综上所述:

  原始:https://juejin.cn/post/7102846252642992159