基于SpringBoot2.0构建的种子项目

个人开发的基于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、数据库、架构设计、面试题、电子书等,期待你的关注!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方木丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值