Commit 3ecf4215 by fsn

初步切换到springboot能运行的版本...保存一下

parent 9cb050ab
......@@ -23,7 +23,8 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<shiro.version>1.4.0</shiro.version>
<mybatis.plus.version>2.0.8</mybatis.plus.version>
<mybatisplus-spring-boot-starter.version>1.0.1</mybatisplus-spring-boot-starter.version>
<fastjson.version>1.2.31</fastjson.version>
</properties>
<dependencies>
......@@ -32,10 +33,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-log4j2</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
......@@ -45,6 +46,11 @@
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>${mybatisplus-spring-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
......@@ -65,6 +71,11 @@
<!--其他依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.google.code</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.0</version>
......@@ -80,16 +91,6 @@
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--<dependency>-->
<!--<groupId>org.apache.velocity</groupId>-->
<!--<artifactId>velocity</artifactId>-->
<!--<version>1.7</version>-->
<!--</dependency>-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
......
package com.stylefeng.guns;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GunsApplication {
public static void main(String[] args) {
SpringApplication.run(GunsApplication.class, args);
}
protected final static Logger logger = LoggerFactory.getLogger(GunsApplication.class);
public static void main(String[] args) {
SpringApplication.run(GunsApplication.class, args);
logger.info("PortalApplication is sussess!");
}
}
package project.config.cache;
package com.stylefeng.guns.config;
import net.sf.ehcache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
......
package com.stylefeng.guns.config;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
/**
* 验证码生成的配置
*
* @author fengshuonan
* @date 2017-05-20 22:03
*/
@Configuration
public class KaptchaConfig {
@Bean
public DefaultKaptcha kaptcha(){
Properties properties = new Properties();
properties.put("kaptcha.border","no");
properties.put("kaptcha.border.color","105,179,90");
properties.put("kaptcha.textproducer.font.color","blue");
properties.put("kaptcha.image.width","125");
properties.put("kaptcha.image.height","45");
properties.put("kaptcha.textproducer.font.size","45");
properties.put("kaptcha.session.key","code");
properties.put("kaptcha.textproducer.char.length","4");
properties.put("kaptcha.textproducer.font.names","宋体,楷体,微软雅黑");
Config config = new Config(properties);
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
defaultKaptcha.setConfig(config);
return defaultKaptcha;
}
}
package com.stylefeng.guns.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.entity.GlobalConfiguration;
import com.baomidou.mybatisplus.enums.DBType;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
import com.stylefeng.guns.core.util.ResKit;
import org.apache.ibatis.plugin.Interceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
/**
* MybatisPlus配置
*
* @author stylefeng
* @Date 2017/5/20 21:58
*/
@Configuration
@MapperScan(basePackages = {"com.stylefeng.guns.modular.*.dao","com.stylefeng.guns.persistence.dao"})
public class MybatisPlusConfig {
private String url;
private String username;
private String password;
/**
* mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor(DataSource dataSource) {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType(DBType.MYSQL.getDb());
//paginationInterceptor.setOptimizeType(Optimize.JSQLPARSER.getOptimize());
return paginationInterceptor;
}
/**
* 事务管理, 声明式事务的开启
*/
@Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
DataSourceTransactionManager manager = new DataSourceTransactionManager();
manager.setDataSource(dataSource);
return manager;
}
/**
* 第三方数据库连接池的配置
*/
//@Bean(initMethod = "init")
//public DruidDataSource dataSource() {
// DruidDataSource dataSource = new DruidDataSource();
// dataSource.setUrl(this.url);
// dataSource.setUsername(this.username);
// dataSource.setPassword(this.password);
// DataSourceConfigTemplate.config(dataSource);
// return dataSource;
//}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package project.config.shiro;
package com.stylefeng.guns.config;
import com.stylefeng.guns.core.shiro.ShiroDbRealm;
import org.apache.shiro.codec.Base64;
......
......@@ -2,10 +2,10 @@ package com.stylefeng.guns.modular.system.controller;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
......@@ -24,7 +24,7 @@ import java.io.IOException;
@RequestMapping("/kaptcha")
public class KaptchaController {
@Resource
@Autowired
Producer producer;
/**
......
package project.config.root;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.*;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import project.config.cache.EhcacheConfig;
import project.config.datasource.DataSourceConfig;
import project.config.shiro.ShiroConfig;
import project.config.web.monitor.DruidMonitorConfig;
import java.util.Properties;
/**
* spring的根配置
*
* @author fengshuonan
* @date 2016年11月12日 下午5:00:06
*/
@Configuration
@ComponentScan(basePackages = {"com.stylefeng"}, excludeFilters = {
@Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)// 这个是为了不让扫描到springmvc的控制器
})
@EnableAspectJAutoProxy
@Import(value = {DataSourceConfig.class, ShiroConfig.class, DruidMonitorConfig.class, EhcacheConfig.class})
public class RootSpringConfig {
@Bean
public DefaultKaptcha kaptcha(){
Properties properties = new Properties();
properties.put("kaptcha.border","no");
properties.put("kaptcha.border.color","105,179,90");
properties.put("kaptcha.textproducer.font.color","blue");
properties.put("kaptcha.image.width","125");
properties.put("kaptcha.image.height","45");
properties.put("kaptcha.textproducer.font.size","45");
properties.put("kaptcha.session.key","code");
properties.put("kaptcha.textproducer.char.length","4");
properties.put("kaptcha.textproducer.font.names","宋体,楷体,微软雅黑");
Config config = new Config(properties);
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
defaultKaptcha.setConfig(config);
return defaultKaptcha;
}
}
//package project.config.root;
//
//import org.springframework.context.annotation.*;
//import org.springframework.context.annotation.ComponentScan.Filter;
//import org.springframework.web.servlet.config.annotation.EnableWebMvc;
//import project.config.EhcacheConfig;
//import project.config.KaptchaConfig;
//import com.stylefeng.guns.config.MybatisPlusConfig;
//import project.config.ShiroConfig;
//import project.config.web.monitor.DruidMonitorConfig;
//
///**
// * spring的根配置
// *
// * @author fengshuonan
// * @date 2016年11月12日 下午5:00:06
// */
//@Configuration
//@ComponentScan(basePackages = {"com.stylefeng"}, excludeFilters = {
// @Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)// 这个是为了不让扫描到springmvc的控制器
//})
//@EnableAspectJAutoProxy
//@Import(value = {MybatisPlusConfig.class, ShiroConfig.class, DruidMonitorConfig.class, EhcacheConfig.class, KaptchaConfig.class})
//public class RootSpringConfig {
//
//}
package project.config.web;
import com.stylefeng.guns.core.intercept.SessionInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
/**
* 保留类,如果控制器需要些aop在这里写
*
* @author fengshuonan
* @date 2016年11月12日 下午4:48:10
*/
@Configuration
@EnableAspectJAutoProxy
public class ControllerAopConfig {
/**
* session的拦截器,用在非controller层调用session
*/
@Bean
public SessionInterceptor sessionInterceptor() {
return new SessionInterceptor();
}
}
//package project.config.web;
//
//import com.stylefeng.guns.core.intercept.SessionInterceptor;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.EnableAspectJAutoProxy;
//
///**
// * 保留类,如果控制器需要些aop在这里写
// *
// * @author fengshuonan
// * @date 2016年11月12日 下午4:48:10
// */
//@Configuration
//@EnableAspectJAutoProxy
//public class ControllerAopConfig {
//
// /**
// * session的拦截器,用在非controller层调用session
// */
// @Bean
// public SessionInterceptor sessionInterceptor() {
// return new SessionInterceptor();
// }
//
//}
package project.config.web;
import org.beetl.ext.spring.BeetlSpringViewResolver;
import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.*;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.MediaType;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
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 project.config.web.beetl.BeetlConfiguration;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* spring mvc配置类
*
* @author fengshuonan
* @date 2016年11月12日 下午5:03:32
*/
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.stylefeng.guns.**.controller", "com.stylefeng.guns.common.controller"})
@EnableAspectJAutoProxy
@Import({ControllerAopConfig.class})
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
// beetl的配置
@Bean(initMethod = "init")
public BeetlConfiguration beetlConfiguration() {
BeetlConfiguration beetlConfiguration = new BeetlConfiguration();
beetlConfiguration.setConfigFileResource(new ClassPathResource("beetl.properties"));
return beetlConfiguration;
}
// beetl的视图解析器
@Bean
public BeetlSpringViewResolver beetlViewResolver() {
BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
beetlSpringViewResolver.setConfig(beetlConfiguration());
beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
beetlSpringViewResolver.setOrder(0);
return beetlSpringViewResolver;
}
// 配置静态资源的处理,对静态资源的请求转发到servlet容器中默认的servlet上(对静态资源的请求不做处理)
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
// 文件上传用的resolver
@Bean
public MultipartResolver multipartResolver() {
return new StandardServletMultipartResolver();
}
// 校验器的配置
@Bean
public LocalValidatorFactoryBean validator(ReloadableResourceBundleMessageSource messageSource) {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setProviderClass(HibernateValidator.class);
localValidatorFactoryBean.setValidationMessageSource(messageSource);
return localValidatorFactoryBean;
}
// 国际化消息资源文件配置(本系统中主要用于显示/错误消息定制)
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:org/hibernate/validator/ValidationMessages");
messageSource.setUseCodeAsDefaultMessage(false);
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(60);
return messageSource;
}
// 配置全局的验证器实例
@Override
public Validator getValidator() {
return this.validator(messageSource());
}
// 配置spring mvc的拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
}
@Bean
public ByteArrayHttpMessageConverter byteMsgConverter() {
return new ByteArrayHttpMessageConverter();
}
@Bean
public StringHttpMessageConverter stringHttpMessageConverter() {
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
List<MediaType> list = new ArrayList<MediaType>();
list.add(MediaType.TEXT_PLAIN);
stringHttpMessageConverter.setSupportedMediaTypes(list);
return stringHttpMessageConverter;
}
}
//package project.config.web;
//
//import org.beetl.ext.spring.BeetlSpringViewResolver;
//import org.hibernate.validator.HibernateValidator;
//import org.springframework.context.annotation.*;
//import org.springframework.context.support.ReloadableResourceBundleMessageSource;
//import org.springframework.core.io.ClassPathResource;
//import org.springframework.http.MediaType;
//import org.springframework.http.converter.ByteArrayHttpMessageConverter;
//import org.springframework.http.converter.StringHttpMessageConverter;
//import org.springframework.validation.Validator;
//import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
//import org.springframework.web.multipart.MultipartResolver;
//import org.springframework.web.multipart.support.StandardServletMultipartResolver;
//import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
//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 project.config.web.beetl.BeetlConfiguration;
//
//import java.nio.charset.Charset;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * spring mvc配置类
// *
// * @author fengshuonan
// * @date 2016年11月12日 下午5:03:32
// */
//@Configuration
//@EnableWebMvc
//@ComponentScan(basePackages = {"com.stylefeng.guns.**.controller", "com.stylefeng.guns.common.controller"})
//@EnableAspectJAutoProxy
//@Import({ControllerAopConfig.class})
//public class SpringMvcConfig extends WebMvcConfigurerAdapter {
//
// // beetl的配置
// @Bean(initMethod = "init")
// public BeetlConfiguration beetlConfiguration() {
// BeetlConfiguration beetlConfiguration = new BeetlConfiguration();
// beetlConfiguration.setConfigFileResource(new ClassPathResource("beetl.properties"));
// return beetlConfiguration;
// }
//
// // beetl的视图解析器
// @Bean
// public BeetlSpringViewResolver beetlViewResolver() {
// BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
// beetlSpringViewResolver.setConfig(beetlConfiguration());
// beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
// beetlSpringViewResolver.setOrder(0);
// return beetlSpringViewResolver;
// }
//
// // 配置静态资源的处理,对静态资源的请求转发到servlet容器中默认的servlet上(对静态资源的请求不做处理)
// @Override
// public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
// configurer.enable();
// }
//
// // 文件上传用的resolver
// @Bean
// public MultipartResolver multipartResolver() {
// return new StandardServletMultipartResolver();
// }
//
// // 校验器的配置
// @Bean
// public LocalValidatorFactoryBean validator(ReloadableResourceBundleMessageSource messageSource) {
// LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
// localValidatorFactoryBean.setProviderClass(HibernateValidator.class);
// localValidatorFactoryBean.setValidationMessageSource(messageSource);
// return localValidatorFactoryBean;
// }
//
// // 国际化消息资源文件配置(本系统中主要用于显示/错误消息定制)
// @Bean
// public ReloadableResourceBundleMessageSource messageSource() {
// ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
// messageSource.setBasenames("classpath:org/hibernate/validator/ValidationMessages");
// messageSource.setUseCodeAsDefaultMessage(false);
// messageSource.setDefaultEncoding("UTF-8");
// messageSource.setCacheSeconds(60);
// return messageSource;
// }
//
// // 配置全局的验证器实例
// @Override
// public Validator getValidator() {
// return this.validator(messageSource());
// }
//
// // 配置spring mvc的拦截器
// @Override
// public void addInterceptors(InterceptorRegistry registry) {
//
// }
//
//
//
// @Bean
// public ByteArrayHttpMessageConverter byteMsgConverter() {
// return new ByteArrayHttpMessageConverter();
// }
//
// @Bean
// public StringHttpMessageConverter stringHttpMessageConverter() {
// StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(
// Charset.forName("UTF-8"));
// List<MediaType> list = new ArrayList<MediaType>();
// list.add(MediaType.TEXT_PLAIN);
// stringHttpMessageConverter.setSupportedMediaTypes(list);
// return stringHttpMessageConverter;
// }
//
//
//
//}
package project.config.web;
import com.alibaba.druid.support.http.StatViewServlet;
import com.stylefeng.guns.core.listener.ConfigListener;
import com.stylefeng.guns.core.util.xss.XssFilter;
import project.config.root.RootSpringConfig;
import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.filter.DelegatingFilterProxy;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import javax.servlet.*;
import javax.servlet.ServletRegistration.Dynamic;
import java.util.EnumSet;
/**
* tomcat启动初始化整个应用的类(代替了web.xml)
*
* @author fengshuonan
* @date 2016年11月12日 下午5:00:31
*/
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// spring应用上下文
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootSpringConfig.class};
}
// springmvc 上下文
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
// 将DispatcherServlet映射到"/"
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
// 通过重载这个方法可以对DispatcherServlt进行额外的配置
@Override
protected void customizeRegistration(Dynamic registration) {
// 上传文件临时路径的配置
String folder = System.getProperty("java.io.tmpdir");
registration.setMultipartConfig(new MultipartConfigElement(folder));
}
// 这里注册的Filter只能过滤DispatherServlet
@Override
protected Filter[] getServletFilters() {
return new Filter[]{};
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//Apache Shiro
FilterRegistration.Dynamic shiroFilter = servletContext.addFilter("shiroFilter", new DelegatingFilterProxy());
shiroFilter.setInitParameter("targetFilterLifecycle", "true");
shiroFilter.addMappingForUrlPatterns(null, false, "/*");
//Encoding Filter
FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter",
new CharacterEncodingFilter());
encodingFilter.setInitParameter("encoding", "UTF-8");
encodingFilter.setInitParameter("forceEncoding", "true");
encodingFilter.addMappingForUrlPatterns(null, false, "/*");
//用来非Controller层获取HttpServletRequest
servletContext.addListener(RequestContextListener.class);
servletContext.addListener(ConfigListener.class);
//防止xss攻击的filter
FilterRegistration.Dynamic xssFilter = servletContext.addFilter("xssSqlFilter",
new XssFilter());
xssFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
super.onStartup(servletContext);
}
/**
* 添加其他servlet
*
* @param servletContext
*/
@Override
protected void registerDispatcherServlet(ServletContext servletContext) {
super.registerDispatcherServlet(servletContext);
try {
ServletRegistration.Dynamic dynamic = servletContext.addServlet("DruidStatView", StatViewServlet.class);
dynamic.addMapping("/druid/*");
} catch (Exception e) {
e.printStackTrace();
}
}
}
//package project.config.web;
//
//import com.alibaba.druid.support.http.StatViewServlet;
//import com.stylefeng.guns.core.listener.ConfigListener;
//import com.stylefeng.guns.core.util.xss.XssFilter;
//import project.config.root.RootSpringConfig;
//import org.springframework.web.context.request.RequestContextListener;
//import org.springframework.web.filter.CharacterEncodingFilter;
//import org.springframework.web.filter.DelegatingFilterProxy;
//import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
//
//import javax.servlet.*;
//import javax.servlet.ServletRegistration.Dynamic;
//import java.util.EnumSet;
//
///**
// * tomcat启动初始化整个应用的类(代替了web.xml)
// *
// * @author fengshuonan
// * @date 2016年11月12日 下午5:00:31
// */
//public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
//
// // spring应用上下文
// @Override
// protected Class<?>[] getRootConfigClasses() {
// return new Class[]{RootSpringConfig.class};
// }
//
// // springmvc 上下文
// @Override
// protected Class<?>[] getServletConfigClasses() {
// return new Class[]{SpringMvcConfig.class};
// }
//
// // 将DispatcherServlet映射到"/"
// @Override
// protected String[] getServletMappings() {
// return new String[]{"/"};
// }
//
// // 通过重载这个方法可以对DispatcherServlt进行额外的配置
// @Override
// protected void customizeRegistration(Dynamic registration) {
// // 上传文件临时路径的配置
// String folder = System.getProperty("java.io.tmpdir");
// registration.setMultipartConfig(new MultipartConfigElement(folder));
// }
//
// // 这里注册的Filter只能过滤DispatherServlet
// @Override
// protected Filter[] getServletFilters() {
// return new Filter[]{};
// }
//
// @Override
// public void onStartup(ServletContext servletContext) throws ServletException {
//
// //Apache Shiro
// FilterRegistration.Dynamic shiroFilter = servletContext.addFilter("shiroFilter", new DelegatingFilterProxy());
// shiroFilter.setInitParameter("targetFilterLifecycle", "true");
// shiroFilter.addMappingForUrlPatterns(null, false, "/*");
//
// //Encoding Filter
// FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter",
// new CharacterEncodingFilter());
// encodingFilter.setInitParameter("encoding", "UTF-8");
// encodingFilter.setInitParameter("forceEncoding", "true");
// encodingFilter.addMappingForUrlPatterns(null, false, "/*");
//
// //用来非Controller层获取HttpServletRequest
// servletContext.addListener(RequestContextListener.class);
// servletContext.addListener(ConfigListener.class);
//
// //防止xss攻击的filter
// FilterRegistration.Dynamic xssFilter = servletContext.addFilter("xssSqlFilter",
// new XssFilter());
// xssFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
//
// super.onStartup(servletContext);
// }
//
// /**
// * 添加其他servlet
// *
// * @param servletContext
// */
// @Override
// protected void registerDispatcherServlet(ServletContext servletContext) {
// super.registerDispatcherServlet(servletContext);
// try {
// ServletRegistration.Dynamic dynamic = servletContext.addServlet("DruidStatView", StatViewServlet.class);
// dynamic.addMapping("/druid/*");
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//}
#app
server:
port: 8080
#spring
spring:
devtools:
restart:
enabled: false
# mysql datasource
datasource:
url: jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
username: root
password: root
#mybatis
mybatis-plus:
mapper-locations: classpath*:com/stylefeng/guns/**/mapping/*.xml
typeAliasesPackage: com.stylefeng.guns.persistence.model
global-config:
id-type: 1
db-column-underline: false
refresh-mapper: true
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
#logging
logging:
level: debug
#jdbc
jdbc:
url: jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
username: root
password: root
jdbc.url=jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
jdbc.username=root
jdbc.password=root
\ No newline at end of file
log4j.rootLogger=info,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/filco.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 100MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mybatis的设置,它们会改变 MyBatis 的运行时行为 -->
<settings>
<!-- <setting name="logImpl" value="STDOUT_LOGGING" /> 打印查询语句 -->
<setting name="cacheEnabled" value="true"/> <!-- 配置的缓存的全局开关 -->
<setting name="lazyLoadingEnabled" value="true"/> <!-- 延时加载的开关 -->
<setting name="multipleResultSetsEnabled" value="true"/> <!-- 开启的话,延时加载一个属性时会加载该对象全部属性,否则按需加载属性 -->
</settings>
<!-- 设置domain的别名来减少冗余 -->
<typeAliases>
<package name="com.stylefeng.guns.persistence.model"/>
</typeAliases>
<!--<plugins>-->
<!-- SQL 执行性能分析,开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长 -->
<!--<plugin interceptor="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">-->
<!--<property name="maxTime" value="100"/>-->
<!--&lt;!&ndash;SQL是否格式化 默认false &ndash;&gt;-->
<!--<property name="format" value="true"/>-->
<!--</plugin>-->
<!-- SQL 执行分析拦截器 stopProceed 发现全表执行 delete update 是否停止运行 -->
<!--<plugin interceptor="com.baomidou.mybatisplus.plugins.SqlExplainInterceptor">-->
<!--<property name="stopProceed" value="true"/>-->
<!--</plugin>-->
<!--</plugins>-->
</configuration>
\ No newline at end of file
package com.stylefeng.guns.base;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import project.config.root.RootSpringConfig;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = RootSpringConfig.class)
@SpringBootConfiguration
public class BaseTest {
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment