java - 如何强制在另一个 bean 之后创建一个 spring bean?

标签 java spring

我有一个名为 SpringUtil 的 bean,它是

@Component
public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext context = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext)
        throws BeansException {
        this.context = applicationContext;
    }

    public static <T> T getBean(String beanName) {
        return (T) context.getBean(beanName);
    }

    ...
}

还有另一个bean在其init方法中使用了SpringUtil,因此它需要在它之前将SpringUtil作为bean加载。我尝试了 @ConditionalOnBean(SpringUtil.class) 但它不起作用。有什么解决方法吗?或者从根本上讲,让 SpringUtil 在所有其他 bean 之前初始化。

最佳答案

您可以 Autowiring SpringUtil,Spring 将管理依赖关系:

@Autowired
private SpringUtil util;

另一种方法是 Autowiring setter :

@Autowired
private setSpringUtil(SpringUtil springUtil)

关于java - 如何强制在另一个 bean 之后创建一个 spring bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55123823/

相关文章:

java - 平台模块之间是否允许循环?

java - 无法将键值对 XML 作为 java 首选项加载

java - 如何在 Spring WebClient 构建器实例中设置 onStatus

java - 从 application.properties 初始化的类中的最终字段

multithreading - Spring Batch多线程抛出java.lang.Thread.State

java - 使用命名约定插件拒绝直接访问 Struts2 中的 JSP 文件

java - 如何使用 attachemnt 从 java 程序打开默认电子邮件客户端,如 Ms Outlook、Lotus、thunderbird?

deployment - 部署 jar 时出现奇怪的警告

java - spring boot中创建KafkaTemplate的正确方法

java - 是否有优化的方法来本地访问基于 spring 的 Rest api?