cn.jiangzeyin.common.spring.SpringUtil Maven / Gradle / Ivy
package cn.jiangzeyin.common.spring;
import cn.jiangzeyin.database.EntityDatabase;
import cn.jiangzeyin.system.DbLogInterface;
import cn.jiangzeyin.system.SystemBean;
import cn.jiangzeyin.system.SystemDbLog;
import cn.jiangzeyin.system.cache.PageTemplateCache;
import cn.jiangzeyin.system.cache.SiteCache;
import cn.jiangzeyin.system.cache.SystemJob;
import cn.jiangzeyin.system.cache.SystemParameterCache;
import cn.jiangzeyin.system.init.SystemInitControl;
import cn.jiangzeyin.system.log.LogType;
import cn.jiangzeyin.system.log.SystemLog;
import org.springframework.beans.BeansException;
import org.springframework.boot.actuate.audit.listener.AuditApplicationEvent;
import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
import org.springframework.boot.context.event.ApplicationPreparedEvent;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.context.event.ContextStoppedEvent;
import org.springframework.util.Assert;
import org.springframework.web.context.support.ServletRequestHandledEvent;
/**
* @author jiangzeyin
* Created by jiangzeyin on 2017/1/5.
*/
@Configuration
public class SpringUtil implements ApplicationListener, ApplicationContextAware {
private static ApplicationContext applicationContext;
/**
* 容器加载完成
*
* @param applicationContext application
* @throws BeansException 异常
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringUtil.applicationContext = applicationContext;
SystemLog.init();
}
/**
* 启动完成
*
* @param event event
*/
@Override
public void onApplicationEvent(ApplicationEvent event) {
// 初始化页面模板
if (event instanceof ApplicationEnvironmentPreparedEvent) { // 初始化环境变量
//System.out.println("0");
} else if (event instanceof ApplicationPreparedEvent) { // 初始化完成
//System.out.println("1");
} else if (event instanceof ContextRefreshedEvent) { // 应用刷新
} else if (event instanceof ApplicationReadyEvent) {// 应用已启动完成
SystemDbLog.setDbLogInterface(new DbLogInterface() {
@Override
public void info(Object o) {
if (o != null)
SystemLog.LOG(LogType.SQL).info(o.toString());
}
@Override
public void error(String msg, Throwable throwable) {
SystemLog.LOG(LogType.SQL_ERROR).error(msg, throwable);
}
@Override
public void warn(Object o) {
if (o != null)
SystemLog.LOG(LogType.SQL).warn(o.toString());
}
@Override
public void warn(String s, Throwable throwable) {
SystemLog.LOG(LogType.SQL_ERROR).error(s, throwable);
}
});
SiteCache.init();
SystemParameterCache.init();
PageTemplateCache.init();
SystemJob.init();
EntityDatabase.init();
SystemInitControl.init();
//创建tomcat 临时文件
ServiceInfoUtil.initTomcatTemPath();
SystemLog.LOG().info(SystemBean.getInstance().getSystemTag() + " 启动完成");
} else if (event instanceof ContextStartedEvent) { // 应用启动,需要在代码动态添加监听器才可捕获
System.out.println("3");
} else if (event instanceof ContextStoppedEvent) { // 应用停止
System.out.println("stop");
} else if (event instanceof ContextClosedEvent) { // 应用关闭
SystemLog.LOG().info("关闭程序");
//SystemExecutorService.shutdown();
} else if (event instanceof ServletRequestHandledEvent) {
ServletRequestHandledEvent servletRequestHandledEvent = (ServletRequestHandledEvent) event;
if (!servletRequestHandledEvent.wasFailure()) {
SystemLog.LOG(LogType.REQUEST).info(servletRequestHandledEvent.toString());
} else {
SystemLog.LOG(LogType.REQUEST).info("error:" + servletRequestHandledEvent.toString());
}
} else if (event instanceof AuditApplicationEvent) {
AuditApplicationEvent auditApplicationEvent = (AuditApplicationEvent) event;
SystemLog.LOG(LogType.REQUEST).info(auditApplicationEvent.toString());
// } else if (event instanceof AuthenticationSuccessEvent) {
//
} else if (event instanceof EmbeddedServletContainerInitializedEvent) {
} else {
System.out.println("else");
System.out.println(event);
}
}
/**
* 获取applicationContext
*
* @return application
*/
public static ApplicationContext getApplicationContext() {
Assert.notNull(applicationContext, "application is null");
return applicationContext;
}
/**
* 通过name获取 Bean.
*
* @param name 名称
* @return 对象
*/
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
/**
* 通过class获取Bean.
*
* @param clazz class
* @param 对象
* @return 对象
*/
public static T getBean(Class clazz) {
return getApplicationContext().getBean(clazz);
}
/**
* 通过name,以及Clazz返回指定的Bean
*
* @param name 名称
* @param clazz class
* @param 对象
* @return 对象
*/
public static T getBean(String name, Class clazz) {
return getApplicationContext().getBean(name, clazz);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy