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

问题描述 投票:0回答:1

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

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

在这里您可以看到someField在创建过程中是必需的,并且未在构造函数的字段列表中指定。多数民众赞成在我的具体情况。

java aspectj spring-aop
1个回答
0
投票

问题中有些听起来不正确,我会解释...

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

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

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

可能会更深入地分析Spring AOP的实际工作原理,您会意识到他们并没有像这样进行严格的验证,但是再次,相比于回答这个问题,这是一个更高级的讨论,而不是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.