Springboot集成forest获取天气信息
导入依赖
代码语言:javascript复制 <dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>spring-boot-starter-forest</artifactId>
<version>1.5.28</version>
</dependency>
注册彩云科技
彩云科技平台注册地址
等审核通过后得到令牌
创建获取天气的接口
这里需要先注册有些彩云科技,通过第三方api来获取实时天气;
代码语言:javascript复制@Repository
public interface MyClient {
// localtion是指目标地址的经度和纬度
@Get(url = "http://api.caiyunapp.com/v2.5/你的令牌/${localtion}/realtime.json")
Map getWeather(@DataVariable("localtion")String localhost);
}
编写service调用代码
代码语言:javascript复制@Scheduled(cron = "0 0 0/2 * * ?") //设置定时任务,执行方法
public ResponseWrapper updateWeather(){
List<Scenic> scenicList = scenicMapper.selectList(null); //从数据库获取景区经纬度
for (Scenic scenic :scenicList){
String localtion = scenic.getScenicLongitude() "," scenic.getScenicLatitude(); //获取目标地方的经纬度
Map weather = myClient.getWeather(localtion); //传入经纬度,然后查询实时天气
Map result = (Map) weather.get("result");
Map realtime = (Map) result.get("realtime");
String temperature = realtime.get("temperature").toString();//获取温度
String skycon = realtime.get("skycon").toString(); //获取下雨或者晴天的信息
String skycons = null;
if (skycon.equals("CLEAR_DAY")){
skycons="晴(白天)";
}else if (skycon.equals("CLEAR_NIGHT")){
skycons="晴(夜间)";
}
else if (skycon.equals("PARTLY_CLOUDY_DAY")){
skycons="多云(白天)";
}
else if (skycon.equals("PARTLY_CLOUDY_NIGHT")){
skycons="多云(夜间)";
}
else if (skycon.equals("CLOUDY")){
skycons="阴";
}
else if (skycon.equals("LIGHT_HAZE")){
skycons="轻度雾霾";
}
else if (skycon.equals("MODERATE_HAZE")){
skycons="中度雾霾";
}
else if (skycon.equals("HEAVY_HAZE")){
skycons="重度雾霾";
}
else if (skycon.equals("LIGHT_RAIN")){
skycons="小雨";
}
else if (skycon.equals("MODERATE_RAIN")){
skycons="中雨";
}
else if (skycon.equals("HEAVY_RAIN")){
skycons="大雨";
}
else if (skycon.equals("STORM_RAIN")){
skycons="暴雨";
}
else if (skycon.equals("FOG")){
skycons="雾";
}
else if (skycon.equals("LIGHT_SNOW")){
skycons="小雪";
}
else if (skycon.equals("MODERATE_SNOW")){
skycons="中雪";
}
else if (skycon.equals("HEAVY_SNOW")){
skycons="大雪";
}
else if (skycon.equals("STORM_SNOW")){
skycons="暴雪";
}
else if (skycon.equals("DUST")){
skycons="浮尘";
}
else if (skycon.equals("SAND")){
skycons="沙尘";
}
else if (skycon.equals("WIND")){
skycons="大风";
}
String weathers = temperature.substring(0,temperature.indexOf(".")) "°C " skycons;
scenic.setWeather(weathers);
scenicMapper.updateById(scenic); //将天气信息存入数据库
}
return null;
}
开启定时任务的主方法注解
代码语言:javascript复制@SpringBootApplication
@EnableScheduling //开启定时任务
@ForestScan(basePackages = "com.tour.client") //扫描client
public class TourApplication {
public static void main(String[] args) {
SpringApplication.run(TourApplication.class, args);
}
}