为了账号安全,请及时绑定邮箱和手机立即绑定

Java电商毕业设计总结(二)

前言

在写基于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编码代码的时候,会遇到实体类多对一关系的情况。通过两张表连接,将多对一的关系结果集映射到实体类里面,有时候会抛出No Construtor异常。这说明这个实体类中或许有Setter、getter方法,或许有有参构造器,但是可以肯定的是没有无参构造器。我们只需要在实体类中加上无参构造器,即可解决该异常。

尾言

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

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消