在我的应用程序中,我定义了一个自定义注释:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface CreateOrUpdateModule {
}
然后将其用于我的方面:
@Aspect
@Component
@AllArgsConstructor
public class CreateOrUpdateAspect {
private final CreateOrUpdateModuleCollector collector;
@AfterReturning(pointcut = "@annotation(com.test.app.aspect.CreateOrUpdateModule)", returning = "entity")
public void addReturnedModuleToCollection(ModularContent entity) {
// do sth
}
}
我叫CreateOrUpdateModuleCollector
的类是具有请求范围的bean:
@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class CreateOrUpdateModuleCollector {
// some methods
}
现在在开发过程中,我遇到了一种情况,其中使用我的自定义@CreateOrUpdateModule
注释进行注释的方法之一是通过cron interval从我的应用程序中触发的(通过不同的方法)。现在,我知道可以将ardard的范围设置为request
,但这不是我的梦想解决方案。我想知道我的案件是否还有其他方法?我在考虑两种解决方案,但我不知道它们是否可行:
@CreateOrUpdateModule
范围内触发request
注释CreateOrUpdateAspect
仅在request
范围内被触发还是我没有看到其他解决方案?