当前位置: 首页 > 面试题库 >

@PostConstruct批注和Spring生命周期

姬歌者
2023-03-14
问题内容

我是Spring的新手,我想知道:

我有一个用@Component(spring)注释的java类,并且在内部有一个用注释的方法@PostConstruct。然后,该类由@Autowired另一个类中的带注释字段引用。我可以假定仅在@PostConstruct调用后才注入类吗?

@Component
class AuthenticationMetrics {

    private static final MetricRegistry metrics = new MetricRegistry();

    final Counter requestsTotal;

    final Meter guestLogins;

    final Meter kfUserLogins;

    final Timer guestLoginResponseTime;

    final Timer kfLoginResponseTime;

    @PostConstruct
    public void populateMetricsRegistry() {
        metrics.counter("authentication.requests.totals");
    }
}

问题答案:

如果您问的是@PostConstruct在该bean被调用之后发生了给定类的注入,那么答案是肯定的-
@PostConstruct在bean被视为“可注入”之前执行

如果您询问是否@PostConstruct在所有注入都完成之后(在同一个bean上)在给定bean上执行-是-
@PostConstruct在将注入提交给给定bean之后执行。这就是它存在的原因。通常,您可以将@PostConstruct操作放入构造函数中。但是,当创建新对象(调用构造函数)时,尚未执行注入操作-
因此依赖于注入对象的任何初始化都将由于NPE而失败。这就是为什么你需要@PostConstruct



 类似资料:
  • 主要内容:1.原来的xml方式,2.注解@Bean,3.使用JSR250中的@PostConstruct和@PreDestroy,4.BeanPostProcessor后置处理器Bean从创建到初始化到销毁的过程 1.原来的xml方式 2.注解@Bean 测试: 3.使用JSR250中的@PostConstruct和@PreDestroy 在创建前和在销毁后 必须要加入扫描注解才可以生效 4.BeanPostProcessor后置处理器 需要继承BeanPostProcessor接口然后将这个类

  • 本文向大家介绍Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作示例,包括了Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作。分享给大家供大家参考,具体如下

  • 借用检查器使用显式的生命周期来明确引用的有效时间应该持续多久。在生命周期没有省略[^1]的情况,Rust 需要显式标注来确定引用的生命周期应该是什么样的。对于显式地标注引用的生命周期的语法如下: foo<'a> // `foo` 带有一个生命周期参量 `'a` 和闭包类似,使用生命周期需要泛型。另外这个生命周期的语法也表明了 foo 的生命周期不能超出 'a 的周期。类型的显式标注有 &'a T

  • 要了解Spring事件是否适合我正在处理的任务,我需要了解它们是如何工作的,它们存储在哪里?因为我可以猜测它们存储在Spring应用程序上下文中,如果应用程序崩溃则会消失,我的猜测正确吗?

  • 我对铁锈寿命的学习过程如下(基于铁锈书): 我想注释,当引用后面的值超出范围时 通常(并不总是!请参阅. data部分,即'静态')值位于块中 我们注释像这样的块,例如结构字段像 。 在哪一点上我的理解是错误的?提前感谢你对我的宽容。 免责声明:

  • 问题内容: 我真的很困惑,因为我不知道何时应该使用它们,以及如何使用?实际上,我想知道和的生命周期。 例如,我应该在哪里保存我的用户(经过身份验证的用户)详细信息(用户名,角色等)?在或? 问题答案: 您可以考虑是全球性的。您可能想存储在其中的一些示例:URL帮助器,应用程序级常量。您应该在此处放置任何您想在每个视图中访问的内容。 仅存储针对特定响应(响应特定请求)的数据。例如,GET / som