如何在创建spring boot xml bean时调用构造函数后设置一个带有公共函数的私有字段?

问题描述 投票:0回答:1

我有一个非静态的外部类A,我在这个类A中有一个嵌套的静态类B。我不能更改这个设计的代码,因为它属于另一个团队。我想做的是从 A 类创建一个对象,但我想设置

int toBeSet 

来自具有某些值的嵌套静态类 B。例如,我想将其设置为 5。如何在带有 bean 的 spring boot 应用程序中执行此操作?我的课程计划如下:

public class OuterClass {
    private int toBeSetOuter;

    public OuterClass(InnerClass innerClass) {
        this.toBeSetOuter = innerClass.toBeSet;
    }

    public static class InnerClass {
        private int a;
        private int b;
        private int toBeSet;

        public InnerClass(int a, int b) {
            this.a = a;
            this.b = b;
        }

        public InnerClass nonStaticMethodInStaticClass(int toBeSet) {
            this.toBeSet = toBeSet;
            return this;
        }
    }
}

我想要的是如下所示,但在 spring boot 应用程序中带有 bean(在 xml 文件中)。

OuterClass.InnerClass innerClass = new OuterClass.InnerClass(1,2);
innerClass.nonStaticMethodInStaticClass(5);
OuterClass outerClass = new OuterClass(innerClass);
xml spring spring-boot javabeans
1个回答
0
投票
  <bean id="idParent" class="OuterClass">
    <constructor-arg name="innerClass" ref="id2"></constructor-arg>
  </bean>
    
  <bean id="id1" class="OuterClass$InnerClass">
    <constructor-arg name="a" value="1"></constructor-arg>
    <constructor-arg name="b" value="2"></constructor-arg>
  </bean>

  <bean id="id2" factory-bean="id1" factory-method="nonStaticMethodInStaticClass">
     <constructor-arg name="toBeSet" value="5"></constructor-arg>
  </bean>
© www.soinside.com 2019 - 2024. All rights reserved.