个人开发的基于SpringBoot2.0构建的种子项目,配置了通用Mapper、Service接口,以及使用FreeMarker模板引擎实现了代码生成器,可用于中小项目的快速开发。
技术选用
- Spring Boot
- Mybatis
- tk.Mybatis
- PageHelper
- FastJson
- Druid
- FreeMarker
代码结构
├── README.md
├── pom.xml
├── springboot-seedproject.iml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── pers
│ │ │ └── hong
│ │ │ └── project
│ │ │ ├── SpringbootSeedprojectApplication.java 启动类
│ │ │ ├── common
│ │ │ │ ├── Constants.java 常量
│ │ │ │ ├── Result.java 结果集
│ │ │ │ ├── ResultGenerator.java 响应结果生成工具
│ │ │ │ └── ServiceException.java 业务异常
│ │ │ ├── config
│ │ │ │ ├── MybatisConfig.java Mybatis配置
│ │ │ │ └── WebMvcConfig.java MVC配置
│ │ │ ├── core
│ │ │ │ ├── AbstractService.java service实现
│ │ │ │ ├── Mapper.java 通用mapper
│ │ │ │ └── Service.java 通用service
│ │ │ └── generator
│ │ │ └── CodeGenerator.java 代码生成器
│ │ └── resources
│ │ ├── application-dev.yml 开发环境
│ │ ├── application-pro.yml 生产环境
│ │ ├── application-test.yml 测试环境
│ │ ├── application.yml 配置文件
│ │ ├── banner.txt banner
│ │ ├── mapper
│ │ └── template 模板文件
│ │ ├── controller.ftl
│ │ ├── service-impl.ftl
│ │ └── service.ftl
│ └── test
│ └── java
│ └── pers
│ └── hong
│ └── project
│ └── SpringbootSeedprojectApplicationTests.java
|
部分代码
WebMVC配置
/**
* @Description: WebMVC配置类
* @Auther: zwh
* @Date: 2018/10/18
*/
public class WebMvcConfig implements WebMvcConfigurer {
public static Logger logger = LoggerFactory.getLogger(WebMvcConfig.class);
/**
* 配置异步支持
*
* @param configurer
*/
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setTaskExecutor(new ThreadPoolTaskExecutor());
configureAsyncSupport(configurer);
}
/**
* 配置资源控制器
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/statis/**")
.addResourceLocations("classpath:/static/");
}
/**
* 默认请求处理
*
* @param configurer
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
/**
* 跨域访问相关配置
*
* @param registry
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/test/**") //可以跨域访问的URL路规则
.allowedOrigins("http://localhost:8080/") //可以跨域访问的访问者
.allowedMethods("GET", "POST", "PUT", "DELETE") //可以跨域访问的方法
.allowedHeaders("") //可以跨域访问的Headers
;
}
// /**
// * 配置异常处理器,会替换系统原本的异常处理器
// * 可参考SpringMVC的 DefaultHandlerExceptionResolver
// * @param resolvers
// */
// @Override
// public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
// resolvers.add(new HandlerExceptionResolver() {
// @Override
// public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// //创建结果集对象
// Result result = new Result();
// 使用视图对象,根据返回参数做判断,然后进行自定义异常页面跳转
// if (ex instanceof xxException) {
// ModelAndView model = new ModelAndView();
// model.setView("", xx);
// return model;
// }else if(ex instanceof yyException){
// doOtherThings;
// }
//
// }
//
// });
// }
/**
* 配置读写Request或者Response的BODY的HttpMessageConverter,会替换默认的HttpMessageConverters
* 这里使用阿里的FastJson作为JSON MessageConverter
*
* @param converters
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//初始化转换器
FastJsonHttpMessageConverter fastConvert = new FastJsonHttpMessageConverter();
//初始化一个转换器配置
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//将配置设置给转换器并添加到HttpMessageConverter转换器列表中
fastConvert.setFastJsonConfig(fastJsonConfig);
//设置编码格式
fastConvert.setDefaultCharset(Charset.forName("UTF-8"));
fastConvert.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));
converters.add(fastConvert);
}
}
通用service接口
/**
* @Description: 通用service
* @Auther: zwh
* @Date: 2018/10/18
*/
public interface Service<T> {
/**
* 通过Id查找
*
* @param id
* @return T
*/
T findById(Integer id);
/**
* 通过Model中某个成员变量名称(非数据表中column的名称)查找,value需符合unique约束
*
* @param fieldName
* @return T
*/
T findBy(String fieldName, Object value) throws TooManyResultsException;
/**
* 条件查询
*
* @param condition
* @return List
*/
List<T> findByCondition(Condition condition);
/**
* 查询所有信息
*
* @return List
*/
List<T> findAll();
/**
* 增加数据
*
* @param model
*/
void save(T model);
/**
* 批量增加数据
*
* @param models
*/
void save(List<T> models);
/**
* 根据id删除数据
*
* @param id
*/
void deleteById(Integer id);
/**
* 批量删除
*
* @param ids
*/
void deleteBatch(String ids);
/**
* 更新数据
*
* @param model
*/
void update(T model);
}
项目地址:GitHub - hong52ni/SpringBoot-SeedProject: 基于SpringBoot构建的种子项目
我的微信公众号:Java架构师进阶编程
专注分享Java技术干货,包括JVM、SpringBoot、SpringCloud、数据库、架构设计、面试题、电子书等,期待你的关注!