电商毕业设计小节2

作者: cmazxiaoma | 来源:发表于2018-05-10 21:39 被阅读125次

    前言

    在写基于Spring Boot的高并发秒杀Demo的时候,遇到了一点问题,因此记录下来。

    遇到的问题

    • 1.当我们在resources目录下,创建fonts文件夹,把Bootstrap所需要的glyphicons-halflings-regular.ttf、glyphicons-halflings-regular.woff、glyphicons-halflings-regular.woff2字体格式文件拷贝进来。然后我们把项目通过maven打包成war包部署到tomcat中,浏览网页的时候会出现Failed two decode downloaded font、OTS parsing error等问题。那是Maven打包复制二进制字体文件时候,没有进行过滤,因此造成二进制文件损坏。我们只需在pom进行如下配置就可以解决。
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <nonFilteredFileExtensions>
                            <nonFilteredFileExtension>woff</nonFilteredFileExtension>
                            <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
                            <nonFilteredFileExtension>eot</nonFilteredFileExtension>
                            <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
                            <nonFilteredFileExtension>svg</nonFilteredFileExtension>
                        </nonFilteredFileExtensions>
                    </configuration>
                </plugin>
    
    

    • 2.我们在resource目录的static文件夹下面,创建css、js、fonts文件夹,分别添加所需要的资源时,然后通过mvn clean package进行打包。会发现target目录中static文件夹下面的资源没有被合理的copy进来。这主要是没有进行maven打包资源的设置,我们要复制static文件夹下面所有文件夹的资源,所以要进行如下配置。
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>*</include>
                        <include>*/*</include>
                        <!--copy static文件夹下面所有-->
                        <include>*/**</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
    

    • 3.在业务不怎么复杂的场景下,可以适当使用存储过程。我们要在MyBatis中设置statementType为CALLABLE。一般存储过程有输入参数,返回的结果以输出参数回调出来。mode为IN说明此参数为输入参数,mode为OUT说明此参数为输出参数。例子如下所示。
      <select id="killByProcedure" statementType="CALLABLE">
        <![CDATA[
          call execute_seckill(
            #{seckillId, jdbcType=BIGINT, mode=IN},
            #{phone, jdbcType=BIGINT, mode=IN},
            #{killTime, jdbcType=TIMESTAMP, mode=IN},
            #{result, jdbcType=INTEGER, mode=OUT}
          )
        ]]>
      </select>
    
    • 4.我们在使用MyBatis编码代码的时候,会遇到实体类多对一关系的情况。通过2张表连接,将多对一的关系结果集映射到实体类里面,有时候会抛出No Construtor异常。这说明这个实体类中或许有Setter、getter方法,或许有有参构造器,但是可以肯定的是没有无参构造器。我们只需要在实体类中加上无参构造器,即可解决该异常。

    尾言

    只有不断的成长,不断的输出价值,才不会被公司扼住咽喉。
    电商项目地址:https://github.com/cmazxiaoma/groupon
    电商秒杀业务项目地址:https://github.com/cmazxiaoma/mallSeckill

    相关文章

      网友评论

      本文标题:电商毕业设计小节2

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