Просмотр исходного кода

修复bug:生成jar包运行springContext为空

zhouchenglin 6 лет назад
Родитель
Сommit
4432ce7865

+ 20 - 3
src/main/java/net/chenlin/dp/common/utils/SpringContextUtils.java

@@ -7,37 +7,54 @@ import org.springframework.stereotype.Component;
 
 /**
  * Spring Context 工具类
+ * 1.在使用此静态方法的类上加注解 @DependsOn("springContextUtils")
+ * 2.确保在此之前 SpringContextUtils 类已加载
  * @author zcl<yczclcn@163.com>
  */
 @Component
 public class SpringContextUtils implements ApplicationContextAware {
 	
-	public static ApplicationContext applicationContext; 
+	private static ApplicationContext applicationContext;
 
 	@Override
-	public void setApplicationContext(ApplicationContext applicationContext)
-			throws BeansException {
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
 		SpringContextUtils.applicationContext = applicationContext;
 	}
 
+	public static ApplicationContext getApplicationContext() {
+		assertApplicationContext();
+		return applicationContext;
+	}
+
 	public static Object getBean(String name) {
+		assertApplicationContext();
 		return applicationContext.getBean(name);
 	}
 
 	public static <T> T getBean(String name, Class<T> requiredType) {
+		assertApplicationContext();
 		return applicationContext.getBean(name, requiredType);
 	}
 
 	public static boolean containsBean(String name) {
+		assertApplicationContext();
 		return applicationContext.containsBean(name);
 	}
 
 	public static boolean isSingleton(String name) {
+		assertApplicationContext();
 		return applicationContext.isSingleton(name);
 	}
 
 	public static Class<? extends Object> getType(String name) {
+		assertApplicationContext();
 		return applicationContext.getType(name);
 	}
 
+	private static void assertApplicationContext() {
+		if (SpringContextUtils.applicationContext == null) {
+			throw new RuntimeException("applicaitonContext属性为null,请检查是否注入了SpringContextUtils!");
+		}
+	}
+
 }

+ 2 - 0
src/main/java/net/chenlin/dp/common/utils/UploadUtils.java

@@ -3,6 +3,7 @@ package net.chenlin.dp.common.utils;
 import net.chenlin.dp.common.support.properties.GlobalProperties;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.DependsOn;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@@ -18,6 +19,7 @@ import java.util.UUID;
  * 文件上传工具类
  * @author zcl<yczclcn@163.com>
  */
+@DependsOn("springContextUtils")
 public class UploadUtils {
 
     private static Logger LOG = LoggerFactory.getLogger(UploadUtils.class);

+ 2 - 0
src/main/java/net/chenlin/dp/modules/sys/quartz/ScheduleJob.java

@@ -10,6 +10,7 @@ import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.DependsOn;
 import org.springframework.scheduling.quartz.QuartzJobBean;
 
 import net.chenlin.dp.common.utils.JSONUtils;
@@ -21,6 +22,7 @@ import net.chenlin.dp.modules.sys.entity.QuartzJobLogEntity;
  * 定时任务
  * @author zcl<yczclcn@163.com>
  */
+@DependsOn("springContextUtils")
 public class ScheduleJob extends QuartzJobBean {
 	
 	private Logger logger = LoggerFactory.getLogger(getClass());

+ 2 - 0
src/main/java/net/chenlin/dp/modules/sys/quartz/ScheduleRunnable.java

@@ -3,6 +3,7 @@ package net.chenlin.dp.modules.sys.quartz;
 import java.lang.reflect.Method;
 
 import org.apache.commons.lang.StringUtils;
+import org.springframework.context.annotation.DependsOn;
 import org.springframework.util.ReflectionUtils;
 
 import net.chenlin.dp.common.exception.RRException;
@@ -12,6 +13,7 @@ import net.chenlin.dp.common.utils.SpringContextUtils;
  * 执行定时任务
  * @author zcl<yczclcn@163.com>
  */
+@DependsOn("springContextUtils")
 public class ScheduleRunnable implements Runnable {
 	
 	private Object target;

+ 2 - 0
src/main/java/net/chenlin/dp/modules/sys/quartz/ScheduleUtils.java

@@ -16,11 +16,13 @@ import net.chenlin.dp.common.exception.RRException;
 import net.chenlin.dp.common.utils.JSONUtils;
 import net.chenlin.dp.common.utils.SpringContextUtils;
 import net.chenlin.dp.modules.sys.entity.QuartzJobEntity;
+import org.springframework.context.annotation.DependsOn;
 
 /**
  * 定时任务工具类
  * @author zcl<yczclcn@163.com>
  */
+@DependsOn("springContextUtils")
 public class ScheduleUtils {
     
 	private static Scheduler scheduler = (Scheduler) SpringContextUtils.getBean("scheduler");

+ 2 - 0
src/main/java/net/chenlin/dp/modules/sys/service/impl/QuartzJobServiceImpl.java

@@ -11,6 +11,7 @@ import net.chenlin.dp.modules.sys.quartz.ScheduleUtils;
 import net.chenlin.dp.modules.sys.service.QuartzJobService;
 import org.quartz.CronTrigger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.DependsOn;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -21,6 +22,7 @@ import java.util.Map;
  * 定时任务
  * @author zcl<yczclcn@163.com>
  */
+@DependsOn("springContextUtils")
 @Service("quartzJobService")
 public class QuartzJobServiceImpl implements QuartzJobService {