美文网首页
SpringBoot搭建第三方技术(不断更新中.....)

SpringBoot搭建第三方技术(不断更新中.....)

作者: MrZhang2019 | 来源:发表于2019-08-09 15:20 被阅读0次
    上一章中讲了关于SpringBoot单模块项目,多模块项目的搭建过程,那么这节就说下SpringBoot中常用好用的第三方技术。

    一、jdbc连接池


    1、导入jdbc需要的maven依赖包

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    

    2、application.yml 配置

    ##数据库连接配置
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
    

    3、测试jdbc

        @Autowired
        private JdbcTemplate jdbcTemplate;
    
        @RequestMapping("/test")
        public List<Map<String,Object>> test(){
            List<Map<String, Object>> resultList = jdbcTemplate.queryForList("select * from test_user ");
            return resultList;
        }
    

    结果如下:

    [
        {
            "id": 1,
            "name": "zhangsan",
            "age": 22
        },
        {
            "id": 2,
            "name": "zhangsan2",
            "age": 22
        },
        {
            "id": 3,
            "name": "zhangsan3",
            "age": 22
        }
    ]
    

    二、mybatis


    1、需要按照上面JDBC连接池配置连接池
    2、添加pom依赖

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.0</version>
    </dependency>
    

    3、application.yml添加mybatis配置

    mybatis:
      ## 添加mybatis中所有映射的mapper的xml文件
      mapper-locations: classpath:mappers/*.xml
      ## 映射的实体类的包位置
      type-aliases-package: com.springboot.mybatis.*
    

    4、mapper.xml 写对应的sql语句

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.springboot.mybatis.mapper.UserMapper">
    
        <resultMap id="BaseResultMap" type="com.springboot.mybatis.entitys.User">
            <id column="id" jdbcType="INTEGER" />
            <result column="name" jdbcType="VARCHAR" property="name" />
            <result column="age" jdbcType="INTEGER" property="age" />
        </resultMap>
    
        <select id="findById" resultMap="BaseResultMap" parameterType="integer">
            select * from user where id = #{id}
        </select>
    
        <select id="findAll" resultMap="BaseResultMap" >
            select * from user
        </select>
    
    </mapper>
    

    5、mapper.java 接口文件

        User findById(Integer id);
    
        List<User> findAll();
    

    6、调用mapper方法

    
        @Autowired
        private UserMapper userMapper;
    
        @RequestMapping("/findById/{userId}")
        public User findById(@PathVariable("userId") Integer userid){
            return userMapper.findById(userid);
        }
    
        @RequestMapping("findAll")
        public List<User> findAll(){
            return userMapper.findAll();
        }
    

    7、测试结果

    ## findById 方法结果
    {
        "id": 0,
        "name": "zhangsan",
        "age": 10
    }
    ## findAll 方法结果
    [
        {
            "id": 0,
            "name": "zhangsan",
            "age": 10
        },
        {
            "id": 0,
            "name": "lisi",
            "age": 15
        }
    ]
    

    三、阿里druid


    1、maven 引入相关包

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.26</version>
    </dependency>
    

    2、application.yml 配置

      druid:
        web:
          allow: ''
          deny: ''
          loginPassword: 123456
          loginUsername: admin
          resetEnable: false
    

    配置说明:

    allow:白名单,多个地址用逗号分开
    deny:黑名单,多个地址用逗号分开
    loginUsername:后台登录用户名
    loginPassword:后台登录密码
    resetEnable:是否可以重置数据源

    3、druid 配置及自动加载

    @Configuration
    public class DruidConfig {
    
        @Value("${spring.druid.web.allow}")
        private String allow ;
        @Value("${spring.druid.web.deny}")
        private String deny ;
        @Value("${spring.druid.web.loginUsername}")
        private String loginUsername ;
        @Value("${spring.druid.web.loginPassword}")
        private String loginPassword ;
        @Value("${spring.druid.web.resetEnable}")
        private String resetEnable ;
    
        @Bean
        public ServletRegistrationBean druidServlet(){
            // web监控配置
            ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
            // 白名单,多个地址用逗号分开
            servletRegistrationBean.addInitParameter("allow",allow);
            // 黑名单,多个地址用逗号分开
            servletRegistrationBean.addInitParameter("deny",deny);
            // 后台登录用户名
            servletRegistrationBean.addInitParameter("loginUsername",loginUsername);
            // 后台登录密码
            servletRegistrationBean.addInitParameter("loginPassword",loginPassword);
            // 是否可以重置数据源
            servletRegistrationBean.addInitParameter("resetEnable",resetEnable);
    
            return servletRegistrationBean;
        }
    
        @Bean
        public FilterRegistrationBean filterRegistrationBean(){
            FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
            filterRegistrationBean.setFilter(new WebStatFilter());
            //所有请求进行监控处理
            filterRegistrationBean.addUrlPatterns("/*");
            //排除
            filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");
            return filterRegistrationBean;
        }
    }
    

    4、访问druid
    http://localhost/druid/index.html
    输入application.yml配置文件中对应的用户名密码即可登录

    druid后台

    四、Swagger API自动生成工具
    1、引入对应maven依赖包

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

    2、增加config配置

    @Configuration
    @EnableSwagger2
    public class Swagger2Config {
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    //扫描包路径
                    .apis(RequestHandlerSelectors.basePackage("com.example.swagger.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
    
        /**
         * 构建 api文档的详细信息函数
         * @return
         */
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    //页面标题
                    .title("自动生成Swagger")
                    //描述
                    .description("接口文档")
                    //创建人
                    .contact(new Contact("zhangsan", "http://baidu.com", "zhangsan@mail.com"))
                    //版本号
                    .version("1.0")
                    .build();
        }
    
    }
    
    最终效果与上面代码文字对应

    3、controller对应写法

    @RestController
    @Api(tags = "首页API说明")
    public class IndexController {
    
        @ApiOperation(value = "首页",notes = "进入首页相关方法")
        @GetMapping("/index")
        public String index(){
            return "this is index!";
        }
    
        @ApiOperation(value = "首页",notes = "进入首页相关方法")
        @GetMapping("/index2")
        public String index2(){
            return "this is index!";
        }
    }
    
    swagger注解

    swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

    @Api:修饰整个类,描述Controller的作用
    @ApiOperation:描述一个类的一个方法,或者说一个接口
    @ApiParam:单个参数描述
    @ApiModel:用对象来接收参数
    @ApiProperty:用对象接收参数时,描述对象的一个字段
    @ApiResponse:HTTP响应其中1个描述
    @ApiResponses:HTTP响应整体描述
    @ApiIgnore:使用该注解忽略这个API
    @ApiError :发生错误返回的信息
    @ApiImplicitParam:一个请求参数
    @ApiImplicitParams:多个请求参数

    相关文章

      网友评论

          本文标题:SpringBoot搭建第三方技术(不断更新中.....)

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