spring 特性
1.Aware系列接口
spring 6.0提供了一系列的Aware接口,方便我们在Bean加载时获取信息
如
@Service
public class study implements BeanNameAware {
// spring实例化bean之后调用此方法
@Override
public void setBeanName(String name) {
System.out.println(name);
}
}
结果
study
2.Async异步任务
- Spring入口必须开启异步,添加@EnableAsync注解
- 必须被spring托管的bean
- 在方法上添加@Async注解
@EnableAsync
@SpringBootApplication
public class SpringSecurityTestApplication {
public static void main(String[] args) {
ApplicationContext run = SpringApplication.run(SpringSecurityTestApplication.class, args);
Study bean = run.getBean(Study.class);
System.out.println("main方法开始...");
bean.asyncText();
System.out.println("main方法结束...");
}
}
@Component()
public class Study {
@Async
public void asyncText() {
System.out.println("异步执行开始");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("异步执行结束");
}
}
结果
main方法开始...
main方法结束...
异步执行开始
异步执行结束
3.定时任务
- 在Spring入口添加@EnableScheduling注解
- 必须被Spring托管
- 在方法添加@Scheduled注解
@EnableScheduling
@SpringBootApplication
public class SpringSecurityTestApplication {
public static void main(String[] args) {
ApplicationContext run = SpringApplication.run(SpringSecurityTestApplication.class, args);
Study bean = run.getBean(Study.class);
System.out.println("main方法开始...");
bean.task();
System.out.println("main方法结束...");
}
}
@Component()
public class Study {
// fixdRate 固定毫秒执行,不管上次是否执行完毕
// fixedDelay 继上次执行后固定毫秒执行
// cron 自定义规则
@Scheduled(fixedRate = 2000)
public void task() {
System.out.println("我是定时任务"+ new Date());
}
}
结果
main方法开始...
我是定时任务Thu Feb 23 08:16:24 CST 2023
main方法结束...
我是定时任务Thu Feb 23 08:16:26 CST 2023
我是定时任务Thu Feb 23 08:16:28 CST 2023
我是定时任务Thu Feb 23 08:16:30 CST 2023
我是定时任务Thu Feb 23 08:16:32 CST 2023
我是定时任务Thu Feb 23 08:16:34 CST 2023
...