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

373 阅读2分钟

####前言 在写基于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方法,或许有有参构造器,但是可以肯定的是没有无参构造器。我们只需要在实体类中加上无参构造器,即可解决该异常。

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