convert to spring boot project

This commit is contained in:
thinkgem
2018-01-10 23:39:55 +08:00
parent 7237c524c5
commit a0c71ce81a
39 changed files with 982 additions and 1434 deletions

View File

@@ -0,0 +1,33 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import com.jeesite.common.io.PropertiesUtils;
/**
* JeeSite Web
* @author ThinkGem
* @version 2018-1-8
*/
@SpringBootApplication(scanBasePackages={"com.jeesite.config"})
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.setDefaultProperties(PropertiesUtils.getInstance().getProperties());
app.run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
builder.properties(PropertiesUtils.getInstance().getProperties());
return builder.sources(Application.class);
}
}

View File

@@ -0,0 +1,28 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config.task;
/**
* 消息发送服务如果需要支持定时任务则要在作业管理里添加该任务msgLocalSendTask.execute();
* @author ThinkGem
* @version 2018年1月10日
*/
public class MsgLocalSendTask {
// <bean id="msgLocalSendTask" class="com.jeesite.modules.msg.task.MsgLocalSendTask">
// <property name="messageService" ref="messageService" />
// <property name="smsSendService">
// <bean class="com.jeesite.modules.msg.task.impl.SmsDemoSendService"></bean>
// </property>
// <property name="mailSendService">
// <bean class="com.jeesite.modules.msg.task.impl.EmailSendService"></bean>
// </property>
// <property name="weixinSendService">
// <bean class="com.jeesite.modules.msg.task.impl.WeixinSendService">
// <property name="weixinService" ref="weixinService"></property>
// </bean>
// </property>
// </bean>-->
}

View File

@@ -0,0 +1,48 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config.web;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
/**
* Servlet 配置
* @author ThinkGem
* @version 2017年11月30日
*/
@Configuration
public class DruidStatConfig {
/**
* 注册DruidFilter拦截
*/
@Bean
public FilterRegistrationBean duridFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
bean.addInitParameter("exclusions", "*.css,*.js,*.png,"
+ "*.jpg,*.gif,*.jpeg,*.bmp,*.ico,*.swf,*.psd,*.htc,*.htm,*.html,"
+ "*.crx,*.xpi,*.exe,*.ipa,*.apk,*.otf,*.eot,*.svg,*.ttf,*.woff,"
+ "/druid/*");
bean.addUrlPatterns("/*");
return bean;
}
/**
* 注册DruidServlet
*/
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean bean = new ServletRegistrationBean();
bean.setServlet(new StatViewServlet());
bean.addUrlMappings("/druid/*");
return bean;
}
}

View File

@@ -0,0 +1,83 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config.web;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.filter.DelegatingFilterProxy;
import org.springframework.web.filter.RequestContextFilter;
import com.jeesite.common.config.Global;
import com.jeesite.common.web.PageCachingFilter;
/**
* Filter 配置
* @author ThinkGem
* @version 2017年11月30日
*/
@Configuration
public class FilterConfig {
/**
* Encoding Filter
*/
@Bean
public FilterRegistrationBean characterEncodingFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new CharacterEncodingFilter());
bean.addInitParameter("encoding", "UTF-8");
bean.addInitParameter("forceEncoding", "true");
bean.addUrlPatterns("/*");
bean.setOrder(1000);
return bean;
}
/**
* PageCache Filter, cache .html suffix.
*/
@Bean
@ConditionalOnProperty(name = "ehcache.pageCaching.enabled", havingValue = "true")
public FilterRegistrationBean pageCachingFilter(EhCacheManagerFactoryBean ehCacheManager) {
FilterRegistrationBean bean = new FilterRegistrationBean();
PageCachingFilter pageCachingFilter = new PageCachingFilter();
pageCachingFilter.setCacheManager(ehCacheManager.getObject());
bean.setFilter(pageCachingFilter);
bean.addInitParameter("cacheName", "pageCachingFilter");
bean.addUrlPatterns(StringUtils.split(Global.getProperty(
"ehcache.pageCaching.urlPatterns"), ","));
bean.setOrder(2000);
return bean;
}
/**
* Apache Shiro Filter
*/
@Bean
public FilterRegistrationBean shiroFilterProxy() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new DelegatingFilterProxy("shiroFilter"));
bean.addInitParameter("targetFilterLifecycle", "true");
bean.addUrlPatterns("/*");
bean.setOrder(3000);
return bean;
}
/**
* Request Context Filter 需要放在shiroFilter后否则request获取不到session
*/
@Bean
public FilterRegistrationBean requestContextFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new RequestContextFilter());
bean.addUrlPatterns("/*");
bean.setOrder(4000);
return bean;
}
}

View File

@@ -0,0 +1,43 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config.web;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextListener;
import com.jeesite.common.shiro.cas.CasOutSessionListener;
/**
* Listener 配置
* @author ThinkGem
* @version 2017年11月29日
*/
@Configuration
public class ListenerConfig {
/**
* CAS Session Listener
*/
@Bean
public ServletListenerRegistrationBean<CasOutSessionListener> casOutSessionListener() {
ServletListenerRegistrationBean<CasOutSessionListener> bean = new ServletListenerRegistrationBean<>();
bean.setListener(new CasOutSessionListener());
bean.setOrder(1000);
return bean;
}
/**
* Request Context Listener
*/
@Bean
public ServletListenerRegistrationBean<RequestContextListener> requestContextListener() {
ServletListenerRegistrationBean<RequestContextListener> bean = new ServletListenerRegistrationBean<>();
bean.setListener(new RequestContextListener());
bean.setOrder(2000);
return bean;
}
}

View File

@@ -0,0 +1,16 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config.web;
import org.springframework.context.annotation.Configuration;
/**
* Servlet 配置
* @author ThinkGem
* @version 2017年11月30日
*/
@Configuration
public class ServletConfig {
}

View File

@@ -0,0 +1,40 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config.web.interceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.jeesite.common.config.Global;
import com.jeesite.modules.sys.interceptor.LogInterceptor;
/**
* 后台管理日志记录拦截器
* @author ThinkGem
* @version 2018年1月10日
*/
@Configuration
@EnableWebMvc
@ConditionalOnProperty(name="web.interceptor.log.enabled", havingValue="true", matchIfMissing=true)
public class LogInterceptorConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogInterceptor())
.addPathPatterns(Global.getAdminPath() + "/**")
.excludePathPatterns(Global.getAdminPath() + "/index")
.excludePathPatterns(Global.getAdminPath() + "/login")
.excludePathPatterns(Global.getAdminPath() + "/**/listData")
.excludePathPatterns(Global.getAdminPath() + "/**/treeData")
.excludePathPatterns(Global.getAdminPath() + "/file/**")
.excludePathPatterns(Global.getAdminPath() + "/tags/**")
.excludePathPatterns(Global.getAdminPath() + "/sys/log/**")
.excludePathPatterns(Global.getAdminPath() + "/sys/online/count")
;
}
}

View File

@@ -0,0 +1,32 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.config.web.interceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.jeesite.common.config.Global;
import com.jeesite.modules.sys.interceptor.LogInterceptor;
/**
* 前台自动切换到手机视图拦截器
* @author ThinkGem
* @version 2018年1月10日
*/
@Configuration
@EnableWebMvc
@ConditionalOnProperty(name="web.interceptor.mobile.enabled", havingValue="true")
public class MobileViewInterceptorConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogInterceptor())
.addPathPatterns(Global.getFrontPath() + "/**")
;
}
}