Ozi*_*ile 2 java spring spring-boot
让我们举一个简单的Spring Boot程序的例子:
Application.java
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class);
}
}
Run Code Online (Sandbox Code Playgroud)
SuperClass.java
public abstract class SuperClass {
@Scheduled(fixedRate = 5000)
public void printSomething() {
System.out.println("this is the super method");
}
}
Run Code Online (Sandbox Code Playgroud)
SubClass.java
@Component
public class SubClass extends SuperClass {
}
Run Code Online (Sandbox Code Playgroud)
根据这个答案,只有注释的注释由@Inherited子类继承,而@Scheduled没有这样的注释.那怎么会有效呢?
@Inherited 仅适用于类类型,而不适用于方法.
请注意,如果使用带注释的类型来注释除类之外的任何内容,则此元注释类型不起作用.另请注意,此元注释仅导致注释从超类继承; 已实现接口上的注释无效.
当Spring扫描bean以获取@Scheduled注释(或其他)时,它会查找bean类中的所有方法.SubClass有一个printSomething如此Spring决定它可以通过调度行为来增强它.
Spring处理@Scheduled与标准代理机制略有不同,并且能够调用private使用它注释的方法.
如果你重写printSomething子类中的方法并省略该@Scheduled声明的注释,Spring就不会应用调度行为.
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |