使用 Micronaut,我有一个可刷新的 bean,我也希望对其进行初始化。 我认为不可能结合@Refreshable@Context注释,所以我必须手动执行@Context初始化。 但它并没有像我期望的那样工作。 我有以下课程:

@Refreshable
public class MyRefreshableBean {

    private static final Logger LOG = LoggerFactory.getLogger(MyRefreshableBean.class);

    @PostConstruct
    public void postConstruct() {
        LOG.info("postConstruct");
    }

    public void tryToForceInitialization() {
        LOG.info("tryToForceInitialization");
    }
}

public class Application {

    private static final Logger LOG = LoggerFactory.getLogger(Application.class);
    private static ApplicationContext ac;

    public static void main(String[] args) {
        ac = Micronaut.run(Application.class);
        ac.getBean(MyRefreshableBean.class).tryToForceInitialization();
    }

    @Scheduled(initialDelay = "5s")
    public void delayed() throws InterruptedException {
        LOG.info("delayed");
        ac.publishEvent(new RefreshEvent());
        Thread.sleep(1000);
        ac.getBean(MyRefreshableBean.class).tryToForceInitialization();
    }
}

如果 a) bean 已经在main()初始化并且 b) 在发送刷新事件后没有延迟,则似乎postConstruct()在上下文刷新后不会被调用。 在代码中使用Thread.sleep()感觉就像一个黑客。 我的代码或我的理解还有其他问题吗?

  ask by Milanka translate from so

本文未有回复,本站智能推荐:

1回复

Micronaut-Kubernetes无法初始化bean

我正在尝试将K8与我的micronaut应用程序集成。 这是我的配置。 但是我得到这个错误。 有人知道我在做什么错吗? 我试图在本地运行我的应用程序,但连接到远程K8群集。 错误: 配置:
2回复

调用计划任务时出错实例化[io.micronaut.configuration.lettuce.health.RedisHealthIndicator]类型的bean时出错

运行此计划时,我遇到以下问题。 在第一次执行时没有问题,但是当时间到期并再次执行时,它会抛出以下错误。 我知道redis的连接有问题,但是在GCP中部署的微服务中,它继续产生同样的问题。 应用程序.yaml 本地设置。 应用程序.yml: 存储库layers.server.repo.InfoRepo
1回复

实例化[io.micronaut.configuration.hibernate.jpa.TransactionalSession$Intercepted]类型的bean时出错

我是 micronnaut 新手我试图包含以下内容来运行本机查询,应用程序运行良好,但是我所有用 @MincronautTest 注释的功能测试都失败并显示以下消息消息:给定限定符不存在 [org.hibernate.SessionFactory] ​​类型的 bean:@Named('defaul
1回复

实例化[org.grails.orm.hibernate.HibernateDatastore]类型的bean时出错:实体映射中的重复列

我正在使用micronaut和gorm编写一个小型APP。 APP包含两个域,即Book和Author。 APP编译没有问题,但是当我运行APP时,出现以下错误: 11:50:08.697 [main]错误io.micronaut.runtime.Micronaut-启动Microna
1回复

如何初始化ApplicationContext和/或环境

典型的应用程序入口点如下所示: 但是,文档表明可以自定义环境和应用程序上下文: 例如, https://docs.micronaut.io/1.1.0.M1/guide/index.html#propertySource , 如果我:-自定义环境(与上面类似)-将环境的实例注入到控制
1回复

MicronautBean初始化顺序

我正在使用 micronaut 框架开发一个 java 应用程序。 我想确保我的所有缓存都首先加载(因此使用 @Context 和 @PostConstruct)来加载我的所有缓存。 在加载了所有缓存后,我想加载一个特定的 bean BeanB(确保最后调用它的 @PostConstruct)。 我
1回复

如何将Bean定义为`RestTemplate`?

我试图从Spring-client使用RestTemplate 。 我不能使用RestTemplate因为此类没有bean 。 我试图找到一些文档,例如从https://docs.micronaut.io/latest/guide/index.html#factories 但是我仍然
1回复

Micronaut:初始化jdbc连接时MicronautTest中的竞争条件

由于从 Micronaut 1.3.2 升级到 1.3.4,我们涉及 jdbc 层的单元测试随机失败并出现错误: io.micronaut.transaction.exceptions.NoTransactionException:不存在当前交易。 考虑在周围的方法上声明 @Transactio