spring-guide之scheduled-task
目標:部署一個spring的scheduling-task應用
需要準備的
- 大概15分鐘
- 一個友好的文本編輯器或者IDE
- jdk1.8 或者更晚的(我用的1.7)
- gradle2.3+ 或者maven3.0+ (我用的gradle)
也可以直接從github上導入代碼
官方:git clone https://github.com/spring-guides/gs-scheduling-tasks.git
我的:https://github.com/chenlisong/projects/spring-guides
代碼實現
創建一個目錄
mkdir -p src/main/java/gs.scheduling.task; └── src └── main └── java └── gs.scheduling.task
創建gradle的配置文件build.gradle
buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'spring-boot' jar { baseName = 'spring-guide' version = '0.1.0' } repositories { mavenCentral() } //我在這裏將jdk改成1.7,原值1.8 sourceCompatibility = 1.7 targetCompatibility = 1.7 dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile('org.springframework.boot:spring-boot-starter-test') }
創建一個scheduled-task任務
@Component public class ScheduledTasks { private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); private static final SimpleDateFormat sdf = new SimpleDateFormat("hh:MM:ss"); @Scheduled(fixedRate=5000) public void print() { log.info("the time is now{}", sdf.format(new Date())); } }
使用spring-boot啓動web服務
@SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class); } }
註解說明
- @SpringBootApplication:是一個方便的註解用來包含下面的註解
- @Configuration:在spring容器中定義bean/class的資源文件
- @EnableAutoConfiguration:告知spring基於classpath的配置添加哪些bean文件,和各種各樣的配置文件
- @ComponentScan:告知spring去掃描gs.scheduling.task文件夾下的@Component,@configuration,@service標記的,並且啓動@Controller
- @EnableScheduling確保spring任務創建的環境,
構建成jar包的方式並執行
//啓動服務
./gradlew bootRun -info | debug
//build成爲jar包,並放在build/libs下
./gradlew build
//cmd下執行jar並啓動服務
java -jar build/libs/spirng-guide-0.1.0.jar
測試一下
2016-09-22 10:25:12.342 INFO 8000 --- [pool-1-thread-1] gs.scheduling.task.ScheduledTasks : the time is now10:09:12
2016-09-22 10:25:17.342 INFO 8000 --- [pool-1-thread-1] gs.scheduling.task.ScheduledTasks : the time is now10:09:17
2016-09-22 10:25:22.342 INFO 8000 --- [pool-1-thread-1] gs.scheduling.task.ScheduledTasks : the time is now10:09:22
2016-09-22 10:25:27.342 INFO 8000 --- [pool-1-thread-1] gs.scheduling.task.ScheduledTasks : the time is now10:09:27
2016-09-22 10:25:32.342 INFO 8000 --- [pool-1-thread-1] gs.scheduling.task.ScheduledTasks : the time is now10:09:32