我正在使用Spring和Java8。我想创建一个方面或类似的东西来设置对象构造期间的字段值,构造函数itsleft验证该字段是否不为null,因此必须相应地设置值,方面是否可能?
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将创建此对象的实例并注入TimeProvider
-另一个bean。如果此TimeProvider
不存在,spring上下文将无法启动,这正是您要实现的目标。您已经在使用构造函数注入,因此只要MyObject
是spring bean,它就应该起作用。显然,在这种情况下,您不需要任何方面,spring会为您完成所有工作。
或者,如果MyObject
不是spring bean,那么正如我所解释的,spring-aop完全不相关。
可能会更深入地分析Spring AOP的实际工作原理,您会意识到他们并没有像这样进行严格的验证,但是再次,相比于回答这个问题,这是一个更高级的讨论,而不是必需的。