任丘市网站建设,网站怎么防黑客,德阳建设机械网站,wordpress short_open_tag一 项目架构1.1 今日指数技术选型【1】前端技术【2】后端技术栈【3】整体概览3.2 核心业务介绍1】业务结构预览【2】业务功能简介1.定时任务调度服务XXL-JOB通过RestTemplate多线程动态拉去股票接口数据#xff0c;刷入数据库#xff1b;
2.国内指数服务
3.板块指数服务
4.涨…一 项目架构1.1 今日指数技术选型【1】前端技术【2】后端技术栈【3】整体概览3.2 核心业务介绍1】业务结构预览【2】业务功能简介1.定时任务调度服务XXL-JOB通过RestTemplate多线程动态拉去股票接口数据刷入数据库
2.国内指数服务
3.板块指数服务
4.涨幅榜展示功能
5.涨停跌停数展示功能
6.成交量对比展示功能
7.个股涨停服务展示功能
8.个股详情展示功能包含分时行情、日k线、周K线图等
9.个股描述服务
10.报表导出服务二 后端开发环境搭建开发工具版本要求2.1 数据库环境搭建【1】表结构介绍注意事项后期股票相关的数据量非常庞大表与表之间尽量不要构建外键约束提升数据库性能同时也为后期分库分表准备【2】数据导入因为我边的CentOS7连接不上 所以在这里面 用本地windoms运行数据库可视化选用 SQLyog - 64 bit mysql用的是5.7.245.2后端工程搭建【1】构建stock_parent父工程创建stock_parent maven工程接下来 复制以下maven到pom.xml packagingpom/packagingproperties!--工程构建的代码格式为UTF-8--project.build.sourceEncodingUTF-8/project.build.sourceEncoding!--编译--maven.compiler.encodingUTF-8/maven.compiler.encoding!--编译原文件--maven.compiler.source8/maven.compiler.source!--生成的编译目录--maven.compiler.target8/maven.compiler.target!--打包时跳过测试--maven.test.skiptrue/maven.test.skip!--mybatis整合spring-boot场景依赖--mybatis-spring-boot-starter.version2.1.4/mybatis-spring-boot-starter.version!--pagehelper版本--pagehelper-spring-boot-starter.version1.2.12/pagehelper-spring-boot-starter.version!--mysql驱动包--mysql-driver.version5.1.49/mysql-driver.version!--fastjson工具--fastjson.version1.2.71/fastjson.version!--依赖的版本--springfox-swagger2.version2.9.2/springfox-swagger2.version!--druid的场景依赖--druid-spring-boot-starter.version1.1.22/druid-spring-boot-starter.version!--druid的核心依赖--druid-core-version1.2.8/druid-core-version!--分库分表对应的版本--sharding-jdbc.version4.0.0-RC1/sharding-jdbc.version!--jwt--jjwt.version0.9.1/jjwt.version!--easyExcel 报表导入导出--easyExcel.version3.0.4/easyExcel.version!--xxl-job--xxl-job-core.version2.3.0/xxl-job-core.version!--spring-boot版本--spring-boot.version2.5.3/spring-boot.version!--日期小插件--joda-time.version2.10.5/joda-time.version!--google.guava--google.guava.version30.0-jre/google.guava.version/properties!--定义依赖版本锁定--dependencyManagementdependencies!--引入springboot依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency!--引入mybatis场景依赖--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis-spring-boot-starter.version}/version/dependency!--pageHelper场景依赖--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pagehelper-spring-boot-starter.version}/version/dependency!--mysql驱动包--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql-driver.version}/version/dependency!--shardingjdbc分库分表--dependencygroupIdorg.apache.shardingsphere/groupIdartifactIdsharding-jdbc-spring-boot-starter/artifactIdversion${sharding-jdbc.version}/version/dependency!--json工具包--dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion${fastjson.version}/version/dependency!--druid-boot依赖--dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion${druid-spring-boot-starter.version}/version/dependency!--druid core--dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion${druid-core-version}/version/dependency!--swagger文档依赖--dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactIdversion${springfox-swagger2.version}/version/dependencydependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger-ui/artifactIdversion${springfox-swagger2.version}/version/dependency!--引入jwt依赖--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion${jjwt.version}/version/dependency!-- 导出 excel --dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion${easyExcel.version}/version/dependency!--xxl-job定义任务框架支持--dependencygroupIdcom.xuxueli/groupIdartifactIdxxl-job-core/artifactIdversion${xxl-job-core.version}/version/dependency!--时间小工具--dependencygroupIdjoda-time/groupIdartifactIdjoda-time/artifactIdversion${joda-time.version}/version/dependency!--引入google的工具集--dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion${google.guava.version}/version/dependency/dependencies/dependencyManagementbuildpluginManagementplugins!--Springboot核心插件--plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationexcludes!--插件运行时排除依赖--excludegroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactId/exclude/excludes/configuration/plugin!--打包跳过test --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdconfigurationskip${maven.test.skip}/skip/configuration/plugin/plugins/pluginManagement/build
注意事项1.打包方式pom
2.通过dependencyManagement、pluginManagement锁定开发中的依赖和插件的版本;接下来 删除父工程的src 【2】构建stock_backend基础工程创建stock_parent的maven子工程stock_backend:【2.1】引入依赖stock_backend工程被stock_parent父工程聚合pom配置如下packagingjar/packagingartifactIdstock_backend/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!-- 基本依赖 web的场景依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--日志--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency!--mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!--单元测试--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--lombok--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency!--mybatis整合spring-boot--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependency!--分页--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactId/dependency!--druid--dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactId/dependency!--配置提示--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependency!--时间小工具--dependencygroupIdjoda-time/groupIdartifactIdjoda-time/artifactId/dependency/dependenciesbuild!--打包名称--finalName${project.artifactId}/finalNamepluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin!-- 打包跳过test --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactId/plugin/plugins/build
【2.2】创建公共包结构找到资料中的公共包结构复制com进入到项目的物理路径IntelliJ IDEA 2020.1.3 x64不同的idea进行项目物理环境的选项不同把刚才复制过来的com复制到main/java下面这样就能得到目录结构里面为空目录 这样做的目的是不能一次次创建目录结构【2.3】快速生成yml和main启动类的插件JBL SpringbootAppGen安装使用生成效果【2.4】配置yml # web定义
server:port: 8081 #指定当前端口号spring:# 配置mysql数据源datasource:druid:username: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3306/stock_db?useUnicodetruecharacterEncodingUTF-8allowMultiQueriestrueuseSSLfalseserverTimezoneAsia/Shanghaidriver-class-name: com.mysql.jdbc.Driver# 初始化时建立物理连接的个数。初始化发生在显示调用 init 方法或者第一次 getConnection 时initialSize: 6# 最小连接池数量minIdle: 2# 最大连接池数量maxActive: 20# 获取连接时最大等待时间单位毫秒。配置了 maxWait 之后缺省启用公平锁# 并发效率会有所下降如果需要可以通过配置 useUnfairLock 属性为 true 使用非公平锁。maxWait: 60000# 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间单位是毫秒minEvictableIdleTimeMillis: 300000# 用来检测连接是否有效的 sql 因数据库方言而差, 例如 oracle 应该写成 SELECT 1 FROM DUALvalidationQuery: SELECT 1 FROM DUAL# 建议配置为 true不影响性能并且保证安全性。申请连接的时候检测# 如果空闲时间大于 timeBetweenEvictionRunsMillis执行 validationQuery 检测连接是否有效。testWhileIdle: true# 申请连接时执行 validationQuery 检测连接是否有效做了这个配置会降低性能。testOnBorrow: false# 归还连接时执行 validationQuery 检测连接是否有效做了这个配置会降低性能。testOnReturn: false# 是否自动回收超时连接poolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计拦截的filters去掉后监控界面sql无法统计wall用于防火墙filters: stat,wall# 通过connectProperties属性来打开mergeSql功能慢SQL记录connectionProperties: druid.stat.mergeSqltrue;druid.stat.slowSqlMillis5000# 配置mybatis
mybatis:type-aliases-package: com.itheima.stock.pojo #指定的包下类名取别名mapper-locations: classpath:mapper/*.xmlconfiguration:map-underscore-to-camel-case: true #开启驼峰映射cache-enabled: false #使全局的映射器启用或禁用缓存。lazy-loading-enabled: false #全局启用或禁用延迟加载。当禁用时所有关联对象都会即时加载。aggressive-lazy-loading: true #当启用时有延迟加载属性的对象在被调用时将会完全加载任意属性。否则每种属性将会按需要加载。# pagehelper配置
pagehelper:helper-dialect: mysql #指定分页数据库类型方言reasonable: true #合理查询超过最大也则查询最后一页support-methods-arguments: true # 支持通过Mapper接口参数来传递分页参数默认falseparams: pacountcountSql # POJO或者Map中发现了countSql属性就会作为count参数使用returnPageInfo: check # always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page因为上面配置了少了一个mapper 所以我们现 在创建这个包注意第一点url: jdbc:mysql://127.0.0.1:3306/stock_db?useUnicodetruecharacterEncodingUTF-8allowMultiQueriestrueuseSSLfalseserverTimezoneAsia/Shanghai这里面的url 如果是连接的是linux的 刚要写成Linux上的Ip 如果连接的是本地win则url 刚要写成jdbc:mysql:///数据库名称或jdbc:mysql://localhost:3306/数据库名称jdbc:mysql://127.0.0.1:3306/数据库名称第二点 本项目用到的mysql为5.7 不是8.0 所以把driver-class-name: com.mysql.cj.jdbc.Driver 把cj删除补充知识driver-class-name: com.mysql.cj.jdbc.Driver mysql8.0
driver-class-name: com.mysql.jdbc.Driver mysql5.7第三点 接口扫描IntelliJ IDEA 2020.1.3 x64版本复制路径写法视频中的idea版本复制路径写法然后把复制过来的路径给放在下图所示【2.5】定义main启动类package com.itheima.stock;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
MapperScan(com.itheima.stock.mapper)
public class StockApp {public static void main(String[] args) {SpringApplication.run(StockApp.class, args);}
}【2.6】定义web测试接口package com.itheima.stock.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
RequestMapping(/api)
public class UserController {GetMapping(/test)public String getName(){return itheima;}}启动注意这里面启动时 要注意你连接的mysql是linux的还是本地的 要注意他们的账户和密码否正确启动成功在浏览器上测试能够获取到在做接口调试的时候 在这里面建议用postman 因为用浏览器只能用到git演示使用课程资料中的------股票API接口测试.json至此工程基础环境搭建完毕5.3 快速构建mybatis业务开发环境安装插件mybatisX工具我们可借助mybatisX工具生成基础代码步骤如下第一步通过idea自带的database组件连接数据库全选11张表 点击第一张表 按住Shist 在点击最后一张表右击第二步配置pojo实体类选项2】集成mybatis的工程结构【3】环境整体测试目的我们通过一个简单的web接口访问数据库验证工程搭建情况
接口功能说明:查询所有上市公司主营业务数据
接口url:/api/quot/stock/business/all【3.1】定义mapper接口方法 StockBusinessMapper接口和xml定义查询所有股票业务信息的接口方法 ListStockBusiness findall(); select idfindall resultMapBaseResultMapselectinclude refidBase_Column_List /from stock_business/select【3.2】定义服务接口及实现定义服务接口package com.itheima.stock.service;import com.itheima.stock.pojo.StockBusiness;
import java.util.List;/*定义股票服务接口*/
public interface StockService {/*查询所有主营业务信息*/ListStockBusiness findAll();} 定义服务接口实现AltEnter package com.itheima.stock.service.impl;import com.itheima.stock.mapper.StockBusinessMapper;
import com.itheima.stock.pojo.StockBusiness;
import com.itheima.stock.service.StockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;Service(stockService)
public class StockServiceImpl implements StockService {Autowiredprivate StockBusinessMapper stockBusinessMapper;Overridepublic ListStockBusiness findAll() {return stockBusinessMapper.findAll();}
}
【3.3】定义web访问接口package com.itheima.stock.controller;import com.itheima.stock.pojo.StockBusiness;
import com.itheima.stock.service.StockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;RestController
RequestMapping(/api/quot)
public class StockController {Autowiredprivate StockService stockService;GetMapping(/stock/business/all)public ListStockBusiness findAllBusiness(){return stockService.findAll();}}
【3.4】启动项目测试成功启动至此后台基本开发环境构建完毕6.前端开发环境搭建6.1 前端环境准备【1】node安装前端node版本详见资料