SpringBoot简介
SpringBoot是基于Spring框架,几乎零配置开箱即用(out-of-the-box)的开发框架。它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
构建最基础的java web应用
不需要再配置web.xml与applicationContext.xml文件,也不需要再配置web服务器(Tomcat, Jetty等),只需要引入Spring Boot的开发依赖,以Maven项目为例:
Spring Boot的开发依赖接下来,即可以直接着手写开发程序了,So easy。编写一个类包含一个main()函数:
最基础的web应用启动该应用程序,在控制台中我们会发现启动了一个Tomcat容器,端口为8080。好了,一个最基本的基于Spring Boot的web应用程序就这样建立成功。是不是很酷?
Spring Boot的web应用基本原理
为保证显示效果,这里以图片展示:
基本原理,引自( http://www.tianmaying.com/tutorial/spring-boot-overview)引入Quartz
加入Quartz依赖
Quartz依赖引入相关依赖
相关依赖在程序中我们需要支持自动注入与事务,所以引入了上面两个相关依赖。
首次结合场景描述
1.服务启动成功后,即开始定时器的运行;
2.不涉及数据的存储及维护;
3.只使用一个简单的固定的定时器来模拟定时任务;
场景分析
1.解决服务启动后,即运行定时器的问题,需要一个监听器,来监听应用;
2.不需要配置数据库连接信息,也不需要基本的配置信息来维护;
3.需要一个任务处理器,即Job;
4.触发时间可以是固定的。
代码清单
1.QuartzApplication,启动应用的包含main()函数的类。
2.MyJob,实现Quartz框架中Job接口,用来定义需要执行的任务。
3.ScheduleListener,继承spring的ApplicationListener监听器,并监控ContextRefreshedEvent事件(容器初始化完成事件),即当所有的Bean都初始化好之后,启动定时器。
4.MyScheduler,借助Quartz框架中的Scheduler,实现任务调度。
关键代码
QuartzApplication
初始化SchedulerFactoryBean,以供MyScheduler使用
应用程序类上,还需要加扫描路径的注解,@ComponentScan(basePackages = { "com.*.* " })
MyJob
任务处理MyJob实现org.quartz.Job接口, 重写execute方法,当任务被触发时,便执行该方法。
ScheduleListener
监听器容器初始化完成后,便会执行该监听器的onApplicationEvent(ContextRefreshedEvent)方法,它确保容器所需要的Bean都初始化完毕。
MyScheduler
调度任务这里定义了一个每隔20秒执行一次的任务。新建Job时(JobDetail对象),指定执行MyJob中的任务。trigger没有指定任务开始时间,默认为当前时间,也没有指定结束时间,结束时间是不确定的,任务会一直执行,只要触发时间满足。schedulerFactoryBean是QuartzApplication中初始化到容器中的Bean,在此类中使用@Autowired方式注入到当前类中。MyScheduler类需要加@Serivce注解,作为一个Bean初始化到容器中。
网友评论
通过@Bean注解配置类中的相应方法,则该方法名默认就是Bean名,该方法返回值就是Bean对象,将该Bean初始化到Context容器中。使用时用诸如@Autowired等注解实现Bean依赖注入。
使用@Bean注解的方法不能是private、final或static的。基于Java类定义Bean配置元数据需要CGLIB的支持,因此要保证类路径中包括CGLIB的jar包。