美文网首页『互联网架构』码农的世界
『互联网架构』软件架构-Spring boot集成模板引擎swa

『互联网架构』软件架构-Spring boot集成模板引擎swa

作者: IT人故事会 | 来源:发表于2019-06-21 12:12 被阅读8次

    原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
    原文链接地址:『互联网架构』软件架构-Spring boot集成模板引擎swagger2实现(87)

    上次说过springboot其实就是一个CI工具,如何体验出来CI的作用就是持续集成,它可以集成各种的工具,这里说说关于模板的集成引擎和Swagger。源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-Spring boot集成模板引擎实现(86)/

    (一)Spring boot 集成模板引擎实现web应用

    • 静态资源访问

    静态资源

    js, css, html, 图片,音视频

    静态资源路径

    系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。
    Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:
    /static,/public,/resources,/META-INF/resources

    在classpath下面创建static目录,并且加入一个图片a.png

    加入之后,然后不需要重启直接访问:http://localhost:8888/a.jpg

    properties 内修改默认的静态资源目录

    spring.resources.static-locations
    

    (二)集成模板引擎

    Spring Boot强烈建议使用模板引擎渲染html页面,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性。Thymeleaf(spring boot推荐), FreeMarker。

    • Thymeleaf

    Spring boot默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,通过配置文件的属性,这个在上次的配置的文件的里面有详细的解释配置里面有。

    集成Thymeleaf步骤

    1.修改pom.xml, 增加如下依赖。

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    

    2.编写Controller

    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * @program: springboot3d
     * @description: ${description}
     * @author: LiMing
     * @create: 2019-06-09 09:15
     **/
    @Controller
    public class SampleController {
    
        @RequestMapping("/testThymeleaf")
        public String testThymeleaf(ModelMap map) {
            // 设置属性
            map.addAttribute("name", "idig8");
            // testThymeleaf:为模板文件的名称
            // 对应src/main/resources/templates/testThymeleaf.html
            return "testThymeleaf";
        }
    }
    

    3.在src/main/resources/下面建立templates/testThymeleaf.html

    <!DOCTYPE html>
    <html xmlns:th="http://www.w3.org/1999/xhtml">
    <head lang="en">
        <meta charset="UTF-8" />
        <title>testThymeleaf</title>
    </head>
    <body>
    <h1 th:text="${name}">idig88</h1>
    </body>
    </html>
    
    

    4.运行spring boot,浏览器输入:http://localhost:8888/testThymeleaf

    • FreeMarker
      1.修改pom.xml,增加依赖
    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    
    

    2.Controller

    @RequestMapping("/testFreemarker")
        public String testFreemarker(Map<String,String> map) {
            map.put("name", "张三");
            return "hello"; //默认为src/main/resources/templates/hello.flt
        }
    

    3.hello.flt,目录为:src\main\resources\templates

    <html>
    <body>
        hello, ${name}
    </body>
    </html>
    

    4.运行spring boot main,浏览器输入如下地址:http://localhost:8881/testFreemarker

    (二)集成Swagger2构建RESTful API文档

    • Swagger2
      1.随项目自动生成强大RESTful API文档,减少工作量
      2.API文档与代码整合在一起,便于同步更新API说明
      3.页面测试功能来调试每个RESTful API

    • 集成Swagger2步骤
      1.修改pom.xml, 添加Swagger2依赖

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.2.2</version>
    </dependency>
    
    

    2.创建Swagger2配置类

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * @program: springboot3d
     * @description: ${description}
     * @author: LiMing
     * @create: 2019-06-09 10:20
     **/
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.idig8.springboot"))// 指定扫描包下面的注解
                    .paths(PathSelectors.any())
                    .build();
        }
        // 创建api的基本信息
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("集成Swagger2构建RESTful APIs")
                    .description("集成Swagger2构建RESTful APIs")
                    .termsOfServiceUrl("https://www.idig8.com")
                    .contact("欢迎关注:编程坑太多")
                    .version("1.0.0")
                    .build();
        }
    }
    
    

    2.创建Controller: SwaggerController.java

    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @program: springboot3d
     * @description: ${description}
     * @author: LiMing
     * @create: 2019-06-09 10:22
     **/
    @RestController
    @RequestMapping(value="/swagger")
    public class SwaggerController {
        @ApiOperation(value="获取用户信息", notes="根据id来获取用户详细信息")
        @ApiImplicitParam(name="id", value="用户ID", required=true, dataType="String")
        @RequestMapping(value="/{id}", method= RequestMethod.GET)
        public Map<String,String> getInfo(@PathVariable String id) {
            Map<String ,String> map = new HashMap<String, String>();
            map.put("name", "张三");
            map.put("age", "34");
            return map;
        }
    }
    

    4.启动Spring boot,访问Swagger UI界面:http://localhost:8881/swagger-ui.html

    PS:今天说了简单模板引擎和swagger2的介绍,只是功能介绍详细的细节没有做阐述。先从会用开始吧,具体的细节还是看官方的api更详细,这里只是从入门开始说起。

    相关文章

      网友评论

        本文标题:『互联网架构』软件架构-Spring boot集成模板引擎swa

        本文链接:https://www.haomeiwen.com/subject/rvqixctx.html