欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-23 09:44:28
...

个人开发的基于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);
}

项目地址:https://github.com/hong52ni/SpringBoot-SeedProject

如果项目有用的到的地方,希望能点个Star或Fork?