Commit 3ecf4215 by fsn

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

parent 9cb050ab
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<shiro.version>1.4.0</shiro.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> </properties>
<dependencies> <dependencies>
...@@ -32,10 +33,10 @@ ...@@ -32,10 +33,10 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId> <artifactId>spring-boot-starter-aop</artifactId>
</dependency> </dependency>
<dependency> <!--<dependency>-->
<groupId>org.springframework.boot</groupId> <!--<groupId>org.springframework.boot</groupId>-->
<artifactId>spring-boot-starter-log4j2</artifactId> <!--<artifactId>spring-boot-starter-log4j2</artifactId>-->
</dependency> <!--</dependency>-->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
...@@ -45,6 +46,11 @@ ...@@ -45,6 +46,11 @@
<artifactId>spring-boot-starter-cache</artifactId> <artifactId>spring-boot-starter-cache</artifactId>
</dependency> </dependency>
<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> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId> <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> </dependency>
...@@ -65,6 +71,11 @@ ...@@ -65,6 +71,11 @@
<!--其他依赖--> <!--其他依赖-->
<dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.google.code</groupId> <groupId>com.google.code</groupId>
<artifactId>kaptcha</artifactId> <artifactId>kaptcha</artifactId>
<version>2.3.0</version> <version>2.3.0</version>
...@@ -80,16 +91,6 @@ ...@@ -80,16 +91,6 @@
<version>3.2.1</version> <version>3.2.1</version>
</dependency> </dependency>
<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> <groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId> <artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version> <version>3.1.0</version>
......
package com.stylefeng.guns; package com.stylefeng.guns;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication
public class GunsApplication { public class GunsApplication {
public static void main(String[] args) { protected final static Logger logger = LoggerFactory.getLogger(GunsApplication.class);
SpringApplication.run(GunsApplication.class, args);
}
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 net.sf.ehcache.CacheManager;
import org.springframework.cache.annotation.EnableCaching; 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 com.stylefeng.guns.core.shiro.ShiroDbRealm;
import org.apache.shiro.codec.Base64; import org.apache.shiro.codec.Base64;
......
...@@ -2,10 +2,10 @@ package com.stylefeng.guns.modular.system.controller; ...@@ -2,10 +2,10 @@ package com.stylefeng.guns.modular.system.controller;
import com.google.code.kaptcha.Constants; import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer; import com.google.code.kaptcha.Producer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -24,7 +24,7 @@ import java.io.IOException; ...@@ -24,7 +24,7 @@ import java.io.IOException;
@RequestMapping("/kaptcha") @RequestMapping("/kaptcha")
public class KaptchaController { public class KaptchaController {
@Resource @Autowired
Producer producer; Producer producer;
/** /**
......
package project.config.root; //package project.config.root;
//
import com.google.code.kaptcha.impl.DefaultKaptcha; //import org.springframework.context.annotation.*;
import com.google.code.kaptcha.util.Config; //import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.*; //import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.context.annotation.ComponentScan.Filter; //import project.config.EhcacheConfig;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; //import project.config.KaptchaConfig;
import project.config.cache.EhcacheConfig; //import com.stylefeng.guns.config.MybatisPlusConfig;
import project.config.datasource.DataSourceConfig; //import project.config.ShiroConfig;
import project.config.shiro.ShiroConfig; //import project.config.web.monitor.DruidMonitorConfig;
import project.config.web.monitor.DruidMonitorConfig; //
///**
import java.util.Properties; // * spring的根配置
// *
/** // * @author fengshuonan
* spring的根配置 // * @date 2016年11月12日 下午5:00:06
* // */
* @author fengshuonan //@Configuration
* @date 2016年11月12日 下午5:00:06 //@ComponentScan(basePackages = {"com.stylefeng"}, excludeFilters = {
*/ // @Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)// 这个是为了不让扫描到springmvc的控制器
@Configuration //})
@ComponentScan(basePackages = {"com.stylefeng"}, excludeFilters = { //@EnableAspectJAutoProxy
@Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)// 这个是为了不让扫描到springmvc的控制器 //@Import(value = {MybatisPlusConfig.class, ShiroConfig.class, DruidMonitorConfig.class, EhcacheConfig.class, KaptchaConfig.class})
}) //public class RootSpringConfig {
@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.web; //package project.config.web;
//
import com.stylefeng.guns.core.intercept.SessionInterceptor; //import com.stylefeng.guns.core.intercept.SessionInterceptor;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy; //import org.springframework.context.annotation.EnableAspectJAutoProxy;
//
/** ///**
* 保留类,如果控制器需要些aop在这里写 // * 保留类,如果控制器需要些aop在这里写
* // *
* @author fengshuonan // * @author fengshuonan
* @date 2016年11月12日 下午4:48:10 // * @date 2016年11月12日 下午4:48:10
*/ // */
@Configuration //@Configuration
@EnableAspectJAutoProxy //@EnableAspectJAutoProxy
public class ControllerAopConfig { //public class ControllerAopConfig {
//
/** // /**
* session的拦截器,用在非controller层调用session // * session的拦截器,用在非controller层调用session
*/ // */
@Bean // @Bean
public SessionInterceptor sessionInterceptor() { // public SessionInterceptor sessionInterceptor() {
return new SessionInterceptor(); // return new SessionInterceptor();
} // }
//
} //}
package project.config.web; //package project.config.web;
//
import org.beetl.ext.spring.BeetlSpringViewResolver; //import org.beetl.ext.spring.BeetlSpringViewResolver;
import org.hibernate.validator.HibernateValidator; //import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.*; //import org.springframework.context.annotation.*;
import org.springframework.context.support.ReloadableResourceBundleMessageSource; //import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.core.io.ClassPathResource; //import org.springframework.core.io.ClassPathResource;
import org.springframework.http.MediaType; //import org.springframework.http.MediaType;
import org.springframework.http.converter.ByteArrayHttpMessageConverter; //import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter; //import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.validation.Validator; //import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; //import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.multipart.MultipartResolver; //import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver; //import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; //import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; //import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; //import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; //import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import project.config.web.beetl.BeetlConfiguration; //import project.config.web.beetl.BeetlConfiguration;
//
import java.nio.charset.Charset; //import java.nio.charset.Charset;
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
/** ///**
* spring mvc配置类 // * spring mvc配置类
* // *
* @author fengshuonan // * @author fengshuonan
* @date 2016年11月12日 下午5:03:32 // * @date 2016年11月12日 下午5:03:32
*/ // */
@Configuration //@Configuration
@EnableWebMvc //@EnableWebMvc
@ComponentScan(basePackages = {"com.stylefeng.guns.**.controller", "com.stylefeng.guns.common.controller"}) //@ComponentScan(basePackages = {"com.stylefeng.guns.**.controller", "com.stylefeng.guns.common.controller"})
@EnableAspectJAutoProxy //@EnableAspectJAutoProxy
@Import({ControllerAopConfig.class}) //@Import({ControllerAopConfig.class})
public class SpringMvcConfig extends WebMvcConfigurerAdapter { //public class SpringMvcConfig extends WebMvcConfigurerAdapter {
//
// beetl的配置 // // beetl的配置
@Bean(initMethod = "init") // @Bean(initMethod = "init")
public BeetlConfiguration beetlConfiguration() { // public BeetlConfiguration beetlConfiguration() {
BeetlConfiguration beetlConfiguration = new BeetlConfiguration(); // BeetlConfiguration beetlConfiguration = new BeetlConfiguration();
beetlConfiguration.setConfigFileResource(new ClassPathResource("beetl.properties")); // beetlConfiguration.setConfigFileResource(new ClassPathResource("beetl.properties"));
return beetlConfiguration; // return beetlConfiguration;
} // }
//
// beetl的视图解析器 // // beetl的视图解析器
@Bean // @Bean
public BeetlSpringViewResolver beetlViewResolver() { // public BeetlSpringViewResolver beetlViewResolver() {
BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver(); // BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
beetlSpringViewResolver.setConfig(beetlConfiguration()); // beetlSpringViewResolver.setConfig(beetlConfiguration());
beetlSpringViewResolver.setContentType("text/html;charset=UTF-8"); // beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
beetlSpringViewResolver.setOrder(0); // beetlSpringViewResolver.setOrder(0);
return beetlSpringViewResolver; // return beetlSpringViewResolver;
} // }
//
// 配置静态资源的处理,对静态资源的请求转发到servlet容器中默认的servlet上(对静态资源的请求不做处理) // // 配置静态资源的处理,对静态资源的请求转发到servlet容器中默认的servlet上(对静态资源的请求不做处理)
@Override // @Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { // public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable(); // configurer.enable();
} // }
//
// 文件上传用的resolver // // 文件上传用的resolver
@Bean // @Bean
public MultipartResolver multipartResolver() { // public MultipartResolver multipartResolver() {
return new StandardServletMultipartResolver(); // return new StandardServletMultipartResolver();
} // }
//
// 校验器的配置 // // 校验器的配置
@Bean // @Bean
public LocalValidatorFactoryBean validator(ReloadableResourceBundleMessageSource messageSource) { // public LocalValidatorFactoryBean validator(ReloadableResourceBundleMessageSource messageSource) {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean(); // LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setProviderClass(HibernateValidator.class); // localValidatorFactoryBean.setProviderClass(HibernateValidator.class);
localValidatorFactoryBean.setValidationMessageSource(messageSource); // localValidatorFactoryBean.setValidationMessageSource(messageSource);
return localValidatorFactoryBean; // return localValidatorFactoryBean;
} // }
//
// 国际化消息资源文件配置(本系统中主要用于显示/错误消息定制) // // 国际化消息资源文件配置(本系统中主要用于显示/错误消息定制)
@Bean // @Bean
public ReloadableResourceBundleMessageSource messageSource() { // public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); // ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:org/hibernate/validator/ValidationMessages"); // messageSource.setBasenames("classpath:org/hibernate/validator/ValidationMessages");
messageSource.setUseCodeAsDefaultMessage(false); // messageSource.setUseCodeAsDefaultMessage(false);
messageSource.setDefaultEncoding("UTF-8"); // messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(60); // messageSource.setCacheSeconds(60);
return messageSource; // return messageSource;
} // }
//
// 配置全局的验证器实例 // // 配置全局的验证器实例
@Override // @Override
public Validator getValidator() { // public Validator getValidator() {
return this.validator(messageSource()); // return this.validator(messageSource());
} // }
//
// 配置spring mvc的拦截器 // // 配置spring mvc的拦截器
@Override // @Override
public void addInterceptors(InterceptorRegistry registry) { // public void addInterceptors(InterceptorRegistry registry) {
//
} // }
//
//
//
@Bean // @Bean
public ByteArrayHttpMessageConverter byteMsgConverter() { // public ByteArrayHttpMessageConverter byteMsgConverter() {
return new ByteArrayHttpMessageConverter(); // return new ByteArrayHttpMessageConverter();
} // }
//
@Bean // @Bean
public StringHttpMessageConverter stringHttpMessageConverter() { // public StringHttpMessageConverter stringHttpMessageConverter() {
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter( // StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(
Charset.forName("UTF-8")); // Charset.forName("UTF-8"));
List<MediaType> list = new ArrayList<MediaType>(); // List<MediaType> list = new ArrayList<MediaType>();
list.add(MediaType.TEXT_PLAIN); // list.add(MediaType.TEXT_PLAIN);
stringHttpMessageConverter.setSupportedMediaTypes(list); // stringHttpMessageConverter.setSupportedMediaTypes(list);
return stringHttpMessageConverter; // return stringHttpMessageConverter;
} // }
//
//
//
} //}
package project.config.web; //package project.config.web;
//
import com.alibaba.druid.support.http.StatViewServlet; //import com.alibaba.druid.support.http.StatViewServlet;
import com.stylefeng.guns.core.listener.ConfigListener; //import com.stylefeng.guns.core.listener.ConfigListener;
import com.stylefeng.guns.core.util.xss.XssFilter; //import com.stylefeng.guns.core.util.xss.XssFilter;
import project.config.root.RootSpringConfig; //import project.config.root.RootSpringConfig;
import org.springframework.web.context.request.RequestContextListener; //import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.filter.CharacterEncodingFilter; //import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.filter.DelegatingFilterProxy; //import org.springframework.web.filter.DelegatingFilterProxy;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; //import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
//
import javax.servlet.*; //import javax.servlet.*;
import javax.servlet.ServletRegistration.Dynamic; //import javax.servlet.ServletRegistration.Dynamic;
import java.util.EnumSet; //import java.util.EnumSet;
//
/** ///**
* tomcat启动初始化整个应用的类(代替了web.xml) // * tomcat启动初始化整个应用的类(代替了web.xml)
* // *
* @author fengshuonan // * @author fengshuonan
* @date 2016年11月12日 下午5:00:31 // * @date 2016年11月12日 下午5:00:31
*/ // */
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
//
// spring应用上下文 // // spring应用上下文
@Override // @Override
protected Class<?>[] getRootConfigClasses() { // protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootSpringConfig.class}; // return new Class[]{RootSpringConfig.class};
} // }
//
// springmvc 上下文 // // springmvc 上下文
@Override // @Override
protected Class<?>[] getServletConfigClasses() { // protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class}; // return new Class[]{SpringMvcConfig.class};
} // }
//
// 将DispatcherServlet映射到"/" // // 将DispatcherServlet映射到"/"
@Override // @Override
protected String[] getServletMappings() { // protected String[] getServletMappings() {
return new String[]{"/"}; // return new String[]{"/"};
} // }
//
// 通过重载这个方法可以对DispatcherServlt进行额外的配置 // // 通过重载这个方法可以对DispatcherServlt进行额外的配置
@Override // @Override
protected void customizeRegistration(Dynamic registration) { // protected void customizeRegistration(Dynamic registration) {
// 上传文件临时路径的配置 // // 上传文件临时路径的配置
String folder = System.getProperty("java.io.tmpdir"); // String folder = System.getProperty("java.io.tmpdir");
registration.setMultipartConfig(new MultipartConfigElement(folder)); // registration.setMultipartConfig(new MultipartConfigElement(folder));
} // }
//
// 这里注册的Filter只能过滤DispatherServlet // // 这里注册的Filter只能过滤DispatherServlet
@Override // @Override
protected Filter[] getServletFilters() { // protected Filter[] getServletFilters() {
return new Filter[]{}; // return new Filter[]{};
} // }
//
@Override // @Override
public void onStartup(ServletContext servletContext) throws ServletException { // public void onStartup(ServletContext servletContext) throws ServletException {
//
//Apache Shiro // //Apache Shiro
FilterRegistration.Dynamic shiroFilter = servletContext.addFilter("shiroFilter", new DelegatingFilterProxy()); // FilterRegistration.Dynamic shiroFilter = servletContext.addFilter("shiroFilter", new DelegatingFilterProxy());
shiroFilter.setInitParameter("targetFilterLifecycle", "true"); // shiroFilter.setInitParameter("targetFilterLifecycle", "true");
shiroFilter.addMappingForUrlPatterns(null, false, "/*"); // shiroFilter.addMappingForUrlPatterns(null, false, "/*");
//
//Encoding Filter // //Encoding Filter
FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter", // FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter",
new CharacterEncodingFilter()); // new CharacterEncodingFilter());
encodingFilter.setInitParameter("encoding", "UTF-8"); // encodingFilter.setInitParameter("encoding", "UTF-8");
encodingFilter.setInitParameter("forceEncoding", "true"); // encodingFilter.setInitParameter("forceEncoding", "true");
encodingFilter.addMappingForUrlPatterns(null, false, "/*"); // encodingFilter.addMappingForUrlPatterns(null, false, "/*");
//
//用来非Controller层获取HttpServletRequest // //用来非Controller层获取HttpServletRequest
servletContext.addListener(RequestContextListener.class); // servletContext.addListener(RequestContextListener.class);
servletContext.addListener(ConfigListener.class); // servletContext.addListener(ConfigListener.class);
//
//防止xss攻击的filter // //防止xss攻击的filter
FilterRegistration.Dynamic xssFilter = servletContext.addFilter("xssSqlFilter", // FilterRegistration.Dynamic xssFilter = servletContext.addFilter("xssSqlFilter",
new XssFilter()); // new XssFilter());
xssFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*"); // xssFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
//
super.onStartup(servletContext); // super.onStartup(servletContext);
} // }
//
/** // /**
* 添加其他servlet // * 添加其他servlet
* // *
* @param servletContext // * @param servletContext
*/ // */
@Override // @Override
protected void registerDispatcherServlet(ServletContext servletContext) { // protected void registerDispatcherServlet(ServletContext servletContext) {
super.registerDispatcherServlet(servletContext); // super.registerDispatcherServlet(servletContext);
try { // try {
ServletRegistration.Dynamic dynamic = servletContext.addServlet("DruidStatView", StatViewServlet.class); // ServletRegistration.Dynamic dynamic = servletContext.addServlet("DruidStatView", StatViewServlet.class);
dynamic.addMapping("/druid/*"); // dynamic.addMapping("/druid/*");
} catch (Exception e) { // } catch (Exception e) {
e.printStackTrace(); // 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; package com.stylefeng.guns.base;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration; import org.springframework.boot.SpringBootConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import project.config.root.RootSpringConfig;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = RootSpringConfig.class) @SpringBootConfiguration
public class BaseTest { 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