java - Spring Bean 类可以包含静态方法吗?

标签 java spring spring-bean

我希望这不是一个太菜鸟的问题,我对 Spring 还很陌生。 bean 类可以包含静态方法吗?我最初的想法是否定的,因为静态方法是全局的,每个整个应用程序和线程都有一个实例可以共享,但 bean 可能不会这样定义。

我尝试搜索这个问题,但找不到明确的答案。

最佳答案

是的,

Spring bean 也可能有静态方法。

使用构造函数@Autowired

@Component
public class Boo {

    private static Foo foo;

    @Autowired
    public Boo(Foo foo) {
        Boo.foo = foo;
    }

    public static void randomMethod() {
         foo.doStuff();
    }

    public static int getThree(){
         return 3;
    }
}

你也可以这样做: 使用@PostConstruct将值传递给静态字段

这里的想法是在spring配置bean之后将bean交给静态字段。

@Component
public class Boo {

    private static Foo foo;
    @Autowired
    private Foo tFoo;

    @PostConstruct
    public void init() {
        Boo.foo = tFoo;
    }

    public static void randomMethod() {
         foo.doStuff();
    }
}

来源:@Autowired and static method

关于java - Spring Bean 类可以包含静态方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47706523/

相关文章:

java - 使用 lambda 函数进行 REST API 调用的 Junit 测试用例

java - 具有运行时构造函数参数的 Spring bean

java - Spring @Value ("${}") 通常为空

java - @ElementCollection Java持久化(Hibernate)导致加载重复实例

java - 推荐一个 Java/Android 游戏库——卡、板等?

java - Spring - I18n - 通过静态类访问 MessageSource?

java - 如何在 Spring 中实现基于注解的集合合并?

java - 如何将此代码从最小堆更改为最大堆

java - @bean 和@Autowired 是如何工作的?

java - Hibernate 抛出 SQLException "id field does not have a default value"