DI 到静态字段不好吗?

Is DI to static field not good?

我对其中包含静态字段的组件 bean 有疑问。

并且我对静态字段进行了 DI 以实现静态方法,以便其他 class 可以在没有 DI 自身的情况下调用此方法

这是不自然的东西吗?只是有人对此有疑问所以..

-编辑

我附上了一些显示我想要的代码

@Component
public class CompWithStatic {

    private static InjectedObj injectedObj ;

    @Autowired
    CompWithStatic(InjectedObj injectedObj ) {
        CompWithStatic.injectedObj = injectedObj;
    }

    public static String doStaticA(String str){
        //do something with injectedObj
        return str + " method A ";
    }

    public static String doStaticB(String str){
        //do something with injectedObj
        return str + " method B ";
    }
}


public enum EnumType {
    ENUMA(str-> CompWithStatic.doStaticA(str)),
    ENUMB(str-> CompWithStatic.doStaticB(str));

    private Function<String,String> expression;

    EnumType(Function expression) {
        this.expression = expression;
    }

    public String doExpress(String str){
        return expression.apply(str);
    }
}

我的意图是每个枚举案例都有动态方法 所以你可以像这样使用它

        EnumType.ENUMA.doExpress("str");

如果这是不自然的方式,请告诉我!

静态字段在某种程度上是可以的,通常 bean 中的常量被定义为静态最终常量。

但是根本不推荐bean中的静态方法,因为对象中没有静态方法的参与,在DI中没有任何位置。 (虽然在 bean 中使用静态方法应该不是问题,因为这些引用将在编译期间被 Class 替换)。