package com.rehome.mqttclienttemperature; import com.rehome.mqttclienttemperature.service.TemperatureService; import org.springframework.beans.BeansException; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import java.util.Map; @EnableJpaAuditing @EnableScheduling @EnableAsync @SpringBootApplication public class AdminClientTemperatureApplication extends SpringBootServletInitializer implements CommandLineRunner, ApplicationContextAware { /** * 获取Spring框架的上下文 */ private ApplicationContext applicationContext; /** 后台接口自动导入 */ @Resource private TemperatureService temperatureService; public static void main(String[] args) { SpringApplication.run(AdminClientTemperatureApplication.class, args); } /** * 调用 applicationContext(不能在main中使用,main是static的,不能调用) * @param args */ @Override public void run(String... args) { //在这里可以调用applicationContext了 Map controllers = applicationContext.getBeansWithAnnotation(RequestMapping.class); for (Map.Entry entry : controllers.entrySet()) { System.out.println("------------------------"); System.out.println(entry.getKey());//demo1Controller } try { if (temperatureService != null) { System.out.println("------------------------"); System.out.println("TemperatureController is not empty"); MqttRSAClient client = new MqttRSAClient(); client.start(temperatureService); }else { System.out.println("temperatureService is empty"); } } catch (Exception ex) { ex.printStackTrace(); } } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } /** * @date 2021-05-18 09:20 * @description: 容器配置,springboot打war包布署必须添加这个配置 为了打包springboot项目 * @Param: SpringApplicationBuilder */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(AdminClientTemperatureApplication.class); } }