Commit 21abc766 by fsn

搞定druid监控

parent 2a338e4a
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<groupId>com.stylefeng</groupId> <groupId>com.stylefeng</groupId>
<artifactId>guns</artifactId> <artifactId>guns</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>war</packaging>
<name>guns</name> <name>guns</name>
<description>guns 的spring boot版本</description> <description>guns 的spring boot版本</description>
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>druid</artifactId> <artifactId>druid</artifactId>
<version>1.0.21</version> <version>1.0.31</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.shiro</groupId> <groupId>org.apache.shiro</groupId>
......
...@@ -10,7 +10,6 @@ public class GunsApplication { ...@@ -10,7 +10,6 @@ public class GunsApplication {
protected final static Logger logger = LoggerFactory.getLogger(GunsApplication.class); protected final static Logger logger = LoggerFactory.getLogger(GunsApplication.class);
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(GunsApplication.class, args); SpringApplication.run(GunsApplication.class, args);
logger.info("GunsApplication is sussess!"); logger.info("GunsApplication is sussess!");
......
package com.stylefeng.guns;
import com.alibaba.druid.support.http.StatViewServlet;
import com.stylefeng.guns.core.listener.ConfigListener;
import com.stylefeng.guns.core.util.xss.XssFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.web.context.request.RequestContextListener;
import javax.servlet.*;
import java.util.EnumSet;
/**
* Guns Web程序启动类
*
* @author fengshuonan
* @date 2017-05-21 9:43
*/
public class GunsServletInitializer extends SpringBootServletInitializer {
private final Logger logger = LoggerFactory.getLogger(GunsServletInitializer.class);
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//用来非Controller层获取HttpServletRequest
servletContext.addListener(RequestContextListener.class);
servletContext.addListener(ConfigListener.class);
logger.info("初始化ConfigListener成功!");
//防止xss攻击的filter
FilterRegistration.Dynamic xssFilter = servletContext.addFilter("xssSqlFilter",
new XssFilter());
xssFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
logger.info("初始化XssFilter成功!");
try {
ServletRegistration.Dynamic dynamic = servletContext.addServlet("DruidStatView", StatViewServlet.class);
dynamic.addMapping("/druid/*");
} catch (Exception e) {
logger.error("初始化druid监控出错!", e);
}
logger.info("初始化DruidMonitor成功!");
super.onStartup(servletContext);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(GunsApplication.class);
}
}
package com.stylefeng.guns.config;
import com.stylefeng.guns.core.intercept.SessionInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 保留类,如果控制器需要些aop在这里写
*
* @author fengshuonan
* @date 2016年11月12日 下午4:48:10
*/
@Configuration
public class ControllerAopConfig {
/**
* session的拦截器,用在非controller层调用session
*/
@Bean
public SessionInterceptor sessionInterceptor() {
return new SessionInterceptor();
}
}
package com.stylefeng.guns.config; package com.stylefeng.guns.config;
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.entity.GlobalConfiguration;
import com.baomidou.mybatisplus.enums.DBType; import com.baomidou.mybatisplus.enums.DBType;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor; 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.annotation.MapperScan;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
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.core.io.ClassPathResource; import project.config.datasource.DataSourceConfigTemplate;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
/** /**
* MybatisPlus配置 * MybatisPlus配置
...@@ -28,6 +17,7 @@ import javax.sql.DataSource; ...@@ -28,6 +17,7 @@ import javax.sql.DataSource;
*/ */
@Configuration @Configuration
@MapperScan(basePackages = {"com.stylefeng.guns.modular.*.dao","com.stylefeng.guns.persistence.dao"}) @MapperScan(basePackages = {"com.stylefeng.guns.modular.*.dao","com.stylefeng.guns.persistence.dao"})
@ConfigurationProperties(prefix = "jdbc")
public class MybatisPlusConfig { public class MybatisPlusConfig {
private String url; private String url;
...@@ -38,7 +28,7 @@ public class MybatisPlusConfig { ...@@ -38,7 +28,7 @@ public class MybatisPlusConfig {
* mybatis-plus分页插件 * mybatis-plus分页插件
*/ */
@Bean @Bean
public PaginationInterceptor paginationInterceptor(DataSource dataSource) { public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType(DBType.MYSQL.getDb()); paginationInterceptor.setDialectType(DBType.MYSQL.getDb());
//paginationInterceptor.setOptimizeType(Optimize.JSQLPARSER.getOptimize()); //paginationInterceptor.setOptimizeType(Optimize.JSQLPARSER.getOptimize());
...@@ -46,48 +36,26 @@ public class MybatisPlusConfig { ...@@ -46,48 +36,26 @@ public class MybatisPlusConfig {
} }
/** /**
* 事务管理, 声明式事务的开启 * druid数据库连接池
*/ */
@Bean @Bean(initMethod = "init")
public DataSourceTransactionManager transactionManager(DataSource dataSource) { public DruidDataSource dataSource() {
DataSourceTransactionManager manager = new DataSourceTransactionManager(); DruidDataSource dataSource = new DruidDataSource();
manager.setDataSource(dataSource); dataSource.setUrl(this.url.trim());
return manager; dataSource.setUsername(this.username.trim());
} dataSource.setPassword(this.password);
DataSourceConfigTemplate.config(dataSource);
/** return dataSource;
* 第三方数据库连接池的配置
*/
//@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) { public void setUrl(String url) {
this.url = url; this.url = url;
} }
public String getUsername() {
return username;
}
public void setUsername(String username) { public void setUsername(String username) {
this.username = username; this.username = username;
} }
public String getPassword() {
return password;
}
public void setPassword(String password) { public void setPassword(String password) {
this.password = password; this.password = password;
} }
......
...@@ -2,13 +2,13 @@ package com.stylefeng.guns.config; ...@@ -2,13 +2,13 @@ package com.stylefeng.guns.config;
import com.google.code.kaptcha.impl.DefaultKaptcha; import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config; import com.google.code.kaptcha.util.Config;
import com.stylefeng.guns.core.intercept.SessionInterceptor;
import net.sf.ehcache.CacheManager; import net.sf.ehcache.CacheManager;
import org.springframework.cache.ehcache.EhCacheCacheManager; import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
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.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import project.config.web.beetl.BeetlConfiguration;
import java.util.Properties; import java.util.Properties;
...@@ -58,12 +58,10 @@ public class OtherConfigs { ...@@ -58,12 +58,10 @@ public class OtherConfigs {
} }
/** /**
* beetl的配置 * session的拦截器,用在非controller层调用session
*/ */
@Bean(initMethod = "init") @Bean
public BeetlConfiguration beetlConfiguration() { public SessionInterceptor sessionInterceptor() {
BeetlConfiguration beetlConfiguration = new BeetlConfiguration(); return new SessionInterceptor();
beetlConfiguration.setConfigFileResource(new ClassPathResource("beetl.properties"));
return beetlConfiguration;
} }
} }
package project.config.web.monitor; package com.stylefeng.guns.config.web;
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator; import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
......
package com.stylefeng.guns.config; package com.stylefeng.guns.config.web;
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;
......
package com.stylefeng.guns.config; package com.stylefeng.guns.config.web;
import com.stylefeng.guns.core.beetl.BeetlConfiguration;
import org.beetl.ext.spring.BeetlSpringViewResolver; import org.beetl.ext.spring.BeetlSpringViewResolver;
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.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import project.config.web.beetl.BeetlConfiguration;
/** /**
* spring mvc配置类 * spring mvc配置类
......
package project.config.web.beetl; package com.stylefeng.guns.core.beetl;
import com.stylefeng.guns.core.beetl.ShiroExt;
import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.core.util.ToolUtil;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration; import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
......
...@@ -23,7 +23,7 @@ import java.util.Map; ...@@ -23,7 +23,7 @@ import java.util.Map;
public class ConfigListener implements ServletContextListener { public class ConfigListener implements ServletContextListener {
private static Map<String, String> conf = new HashMap<String, String>(); private static Map<String, String> conf = new HashMap<>();
public static Map<String, String> getConf() { public static Map<String, String> getConf() {
return conf; return conf;
......
...@@ -45,7 +45,6 @@ public class RoleServiceImpl implements IRoleService { ...@@ -45,7 +45,6 @@ public class RoleServiceImpl implements IRoleService {
//删除角色 //删除角色
this.roleMapper.deleteById(roleId); this.roleMapper.deleteById(roleId);
// 删除该角色所有的权限 // 删除该角色所有的权限
this.roleDao.deleteRolesById(roleId); this.roleDao.deleteRolesById(roleId);
} }
......
package project.config.datasource; //package project.config.datasource;
//
import com.alibaba.druid.pool.DruidDataSource; //import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.entity.GlobalConfiguration; //import com.baomidou.mybatisplus.entity.GlobalConfiguration;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor; //import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean; //import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
import com.stylefeng.guns.core.util.ResKit; //import com.stylefeng.guns.core.util.ResKit;
import org.apache.ibatis.plugin.Interceptor; //import org.apache.ibatis.plugin.Interceptor;
import org.mybatis.spring.mapper.MapperScannerConfigurer; //import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.EnvironmentAware; //import org.springframework.context.EnvironmentAware;
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.PropertySource; //import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment; //import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource; //import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource; //import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager; //import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement; //import org.springframework.transaction.annotation.EnableTransactionManagement;
//
import javax.sql.DataSource; //import javax.sql.DataSource;
//
/** ///**
* 数据源配置 // * 数据源配置
* // *
* @author fengshuonan // * @author fengshuonan
* @date 2016年11月12日 下午4:55:09 // * @date 2016年11月12日 下午4:55:09
*/ // */
@Configuration //@Configuration
@EnableTransactionManagement //@EnableTransactionManagement
@PropertySource("classpath:jdbc.properties") //@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig implements EnvironmentAware { //public class DataSourceConfig implements EnvironmentAware {
//
private Environment em; // private Environment em;
//
/** // /**
* 扫描所有mybatis的接口 // * 扫描所有mybatis的接口
* // *
* @author fengshuonan // * @author fengshuonan
*/ // */
@Bean // @Bean
public MapperScannerConfigurer mappers() { // public MapperScannerConfigurer mappers() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); // MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.stylefeng.guns.modular.*.dao;com.stylefeng.guns.persistence.dao"); // mapperScannerConfigurer.setBasePackage("com.stylefeng.guns.modular.*.dao;com.stylefeng.guns.persistence.dao");
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); // mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
return mapperScannerConfigurer; // return mapperScannerConfigurer;
} // }
//
/** // /**
* spring和MyBatis整合 // * spring和MyBatis整合
* // *
* @author fengshuonan // * @author fengshuonan
*/ // */
@Bean // @Bean
public MybatisSqlSessionFactoryBean sqlSessionFactory(DataSource dataSource, GlobalConfiguration globalConfig) { // public MybatisSqlSessionFactoryBean sqlSessionFactory(DataSource dataSource, GlobalConfiguration globalConfig) {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean(); // MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource); // sqlSessionFactory.setDataSource(dataSource);
sqlSessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml")); // sqlSessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
Resource[] classPathResources = ResKit.getClassPathResources("classpath*:com/stylefeng/guns/**/mapping/*.xml"); // Resource[] classPathResources = ResKit.getClassPathResources("classpath*:com/stylefeng/guns/**/mapping/*.xml");
sqlSessionFactory.setMapperLocations(classPathResources); // sqlSessionFactory.setMapperLocations(classPathResources);
//
//以下为mybatis-plus配置 // //以下为mybatis-plus配置
PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType("mysql"); // paginationInterceptor.setDialectType("mysql");
sqlSessionFactory.setPlugins(new Interceptor[]{paginationInterceptor}); // sqlSessionFactory.setPlugins(new Interceptor[]{paginationInterceptor});
sqlSessionFactory.setGlobalConfig(globalConfig); // sqlSessionFactory.setGlobalConfig(globalConfig);
return sqlSessionFactory; // return sqlSessionFactory;
} // }
//
/** // /**
* mybatis-plus的配置 // * mybatis-plus的配置
* // *
* @author fengshuonan // * @author fengshuonan
* @date 2017年2月22日 下午3:39:28 // * @date 2017年2月22日 下午3:39:28
*/ // */
@Bean // @Bean
public GlobalConfiguration globalConfig() { // public GlobalConfiguration globalConfig() {
GlobalConfiguration globalConfig = new GlobalConfiguration(); // GlobalConfiguration globalConfig = new GlobalConfiguration();
/** // /**
* AUTO->`0`("数据库ID自增") // * AUTO->`0`("数据库ID自增")
* INPUT->`1`(用户输入ID") // * INPUT->`1`(用户输入ID")
* ID_WORKER->`2`("全局唯一ID") // * ID_WORKER->`2`("全局唯一ID")
* UUID->`3`("全局唯一ID") // * UUID->`3`("全局唯一ID")
*/ // */
globalConfig.setIdType(1); // globalConfig.setIdType(1);
globalConfig.setDbType("mysql"); // globalConfig.setDbType("mysql");
//
/** // /**
* 全局表为下划线命名设置 // * 全局表为下划线命名设置
*/ // */
globalConfig.setDbColumnUnderline(false); // globalConfig.setDbColumnUnderline(false);
//
return globalConfig; // return globalConfig;
} // }
//
/** // /**
* 事务管理, 声明式事务的开启 // * 事务管理, 声明式事务的开启
* // *
* @author fengshuonan // * @author fengshuonan
*/ // */
@Bean // @Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) { // public DataSourceTransactionManager transactionManager(DataSource dataSource) {
DataSourceTransactionManager manager = new DataSourceTransactionManager(); // DataSourceTransactionManager manager = new DataSourceTransactionManager();
manager.setDataSource(dataSource); // manager.setDataSource(dataSource);
return manager; // return manager;
} // }
//
/** // /**
* 第三方数据库连接池的配置 // * 第三方数据库连接池的配置
* // *
* @author fengshuonan // * @author fengshuonan
* @Date 2017/4/27 17:24 // * @Date 2017/4/27 17:24
*/ // */
@Bean(initMethod = "init") // @Bean(initMethod = "init")
public DruidDataSource dataSource() { // public DruidDataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource(); // DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(em.getProperty("jdbc.url").trim()); // dataSource.setUrl(em.getProperty("jdbc.url").trim());
dataSource.setUsername(em.getProperty("jdbc.username").trim()); // dataSource.setUsername(em.getProperty("jdbc.username").trim());
dataSource.setPassword(em.getProperty("jdbc.password").trim()); // dataSource.setPassword(em.getProperty("jdbc.password").trim());
//
DataSourceConfigTemplate.config(dataSource); // DataSourceConfigTemplate.config(dataSource);
return dataSource; // return dataSource;
} // }
//
@Override // @Override
public void setEnvironment(Environment environment) { // public void setEnvironment(Environment environment) {
this.em = environment; // this.em = environment;
} // }
//
} //}
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; //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.config.web.SpringMvcConfig;
//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 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 project.config.root.RootSpringConfig;
// //
//import javax.servlet.*; //import javax.servlet.*;
//import javax.servlet.ServletRegistration.Dynamic; //import javax.servlet.ServletRegistration.Dynamic;
......
#app #app
server: server:
port: 8080 port: 80
#spring #spring
spring: spring:
......
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