为什么当设置为来自cron的方法时,注释的设置方面不起作用。
if (!require("forecast")){install.packages("forecast"); library(forecast)}
train<-ts(your_data_train,frequency=24)
test<-ts(your_data_test,frequency=24)
fit1<-tslm(train ~ trend + season) #linear regression
fcast1 <- forecast(fit1,h=npred ,level = 0)
fit2<-ets(train,ic="aic") #exponencial smoothing without Box-Cox
fcast2 <- forecast(fit2,h=npred ,level = 0)
fit3<-HoltWinters(train) #Clasic Holtwinter (similar to exponencial smoothing)
fcast3 <-forecast(fit3,h=npred ,level = 0)
fit4<-HoltWinters(train,seasonal = "mult") #Holtwinter mult
fcast4 <-forecast(fit4,h=npred ,level = 0)
fit5 <- tbats(train) #Model TBATS
fcast5 <- forecast(fit5, h=npred ,level = 0)
lam <- BoxCox.lambda(train)
fit6 <- ets(train, additive=TRUE, lambda=lam) #Model exponencial smoothing with de Box.Cox
fcast6 <-forecast(fit6,h=npred,level = 0)
pred<-c(fcast1$mean,fcast2$mean,fcast3$mean,fcast4$mean,fcast5$mean,fcast6$mean)
error<-0
for(i in 1:length(pred)){
error[i]<-mean((pred[i]-test)^2)
}
答案 0 :(得分:1)
以下是关于Spring AOP应该记住的几点,
由于Spring的AOP框架基于代理的特性,目标对象中的调用根据定义未截获。
对于 JDK代理,只有代理上的公开接口方法调用可以拦截。使用 CGLIB ,公开和受保护方法调用代理将截获,甚至包 - 必要时可见方法。
您可以找到更多here。
myMethod
为私有,因此不会拦截对myMethod
的调用。请参阅上面提到的第二点。myMethod
公开,如果通过myMethod
方式进行调用,也不会截获对schedule
的调用。请参阅上面提到的第一点。myMethod
公开,如果从对象外部直接调用myMethod
方法,则会拦截对myMethod
的调用。 但是,您可以通过利用AspectJ源编织来拦截私有方法。在源代码编织中,编织器成为编译器的一部分。
编织器通过处理源代码并生成编织的Java字节码来充当编译器。它使用javac
编译器而不是ajc
编译器。
以下是您需要进行的更改:
aspectj-maven-plugin
插件添加到pom.xml
如下所示,MyAspect
切入点的更改包含私有方法。
@Component
@Aspect
public class MyAspect {
@Before("@annotation(myAnnoAnnotation) && execution(private * *(..))")
public void myAnnoAspect(JoinPoint jp, MyAnno myAnnoAnnotation) {
...
}
}
您可以找到完整的工作示例here。
答案 1 :(得分:0)
尝试如下更改您的来源。
当然,具有main方法的应用程序类应附加@EnableScheduling。
@Component
public class MyClass {
@MyAnno
@Scheduled(cron = "0/5 * * * * ?")
public void schedule() {
myMethod("test");
}
private void myMethod(String text) {
//TODO enter your code.
}
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno{
}
@Aspect
@Component
public class MyAnnoAspect{
@Before("@annotation(MyAnno)")
public void myAnnoAspect(JoinPoint jp) {
}
}