gpt4 book ai didi

Java AOP在构造对象时设置字段值

转载 作者:行者123 更新时间:2023-12-02 09:11:28 25 4
gpt4 key购买 nike

我正在使用Spring和Java 8。我想创建一个方面或类似的东西,在对象构造期间设置我的字段的值,构造函数itsleft验证该字段是否不为空,因此必须设置该值因此,方面是否可能?

protected MyObject(TimeProvider timeProvider) {
this.timeProvider = requireNonNull(timeProvider, " cannot be null");
requireNonNull(someField, "someFieldcannot be null");

在这里你可以看到 someField 在创建过程中是必需的,并且没有在构造函数的字段列表中指定。这就是我的具体案例。

最佳答案

问题里有些地方听起来不对,我会解释一下......

Spring AOP 确实允许创建包装 Spring bean 的方面。它们与非 spring 管理的对象完全无关。

现在,如果您正在谈论 Spring Bean:MyObject,那么 spring 将创建该对象的实例并注入(inject) TimeProvider - 另一个 bean。如果这个 TimeProvider 不存在,spring 上下文将无法启动,这正是您想要实现的目标。您已经在使用构造函数注入(inject),因此只要 MyObject 是 spring bean,这应该可以工作。显然,在这种情况下,您不需要任何方面,Spring 将为您完成所有工作。

或者,如果 MyObject 不是 spring bean,那么 spring-aop 就完全不相关,正如我所解释的。

可以更深入地分析 Spring AOP 的真正工作原理,并且您会意识到它们并不完全像这样进行验证,但同样,这是比回答这个问题所需的更高级的讨论

关于Java AOP在构造对象时设置字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59392321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com