当前位置: 首页 > wzjs >正文

靠广告赚钱的网站备案免费产品推广网站

靠广告赚钱的网站备案,免费产品推广网站,做网站公司怎么开拓更多业务,wordpress商城 微信支付宝以下是关于 Spring Boot Vue 前后端开发的打包、测试、监控、预先编译和容器部署 的详细说明,涵盖从开发到生产部署的全流程: 1. 打包 1.1 后端(Spring Boot) 打包方式 使用 Maven 或 Gradle 打包成可执行的 JAR/WAR 文件&…

以下是关于 Spring Boot + Vue 前后端开发的打包、测试、监控、预先编译和容器部署 的详细说明,涵盖从开发到生产部署的全流程:


1. 打包

1.1 后端(Spring Boot)

打包方式

使用 Maven 或 Gradle 打包成可执行的 JAR/WAR 文件

<!-- pom.xml 配置 Spring Boot Maven 插件 -->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

执行命令:

mvn clean package  # 生成 target/*.jar 文件

Docker 包装

创建 Dockerfile

# 使用官方 JDK 基础镜像
FROM openjdk:8-jdk-alpine
# 复制构建好的 JAR 包
COPY target/*.jar app.jar
# 暴露端口
EXPOSE 8080
# 运行命令
ENTRYPOINT ["java", "-jar", "app.jar"]

1.2 前端(Vue)

打包配置

使用 Vue CLI 的 build 命令生成静态资源:

npm run build  # 生成 dist/ 目录

Vue 配置示例(vue.config.js)

module.exports = {// 指定输出目录outputDir: 'dist',// 静态资源公共路径(用于部署到子路径)publicPath: process.env.NODE_ENV === 'production' ? '/vue/' : '/',// 配置代理解决开发环境跨域devServer: {proxy: {'/api': {target: 'http://localhost:8080',changeOrigin: true,pathRewrite: { '^/api': '' }}}}
};

2. 测试

2.1 后端测试

单元测试(JUnit + Mockito)

@SpringBootTest
class UserControllerTest {@Autowiredprivate UserController userController;@MockBeanprivate UserService userService;@Testvoid testGetUser() {// 模拟 UserService 的返回值when(userService.getUser(1L)).thenReturn(new User(1L, "John"));// 调用 Controller 方法ResponseEntity<User> response = userController.getUser(1L);// 断言结果assertEquals("John", response.getBody().getName());}
}

集成测试(SpringBootTest)

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ApplicationTests {@Autowiredprivate TestRestTemplate restTemplate;@Testpublic void testHealthCheck() {ResponseEntity<String> response = restTemplate.getForEntity("/health", String.class);assertEquals(200, response.getStatusCodeValue());}
}

性能测试(JMeter)

  • 使用 JMeter 脚本模拟高并发请求,测试接口响应时间。
  • 配置线程组、HTTP 请求、断言和监听器(如聚合报告)。

2.2 前端测试

单元测试(Jest)

// user.test.js
import { getUser } from './user';test('getUser should return user data', () => {expect(getUser(1)).toEqual({ id: 1, name: 'Alice' });
});

E2E 测试(Cypress)

// cypress/integration/example_spec.js
describe('访问首页', () => {it('加载首页并验证标题', () => {cy.visit('/');cy.get('h1').contains('欢迎来到 Vue 应用');});
});

静态代码分析(ESLint)

package.json 中配置:

{"eslintConfig": {"extends": ["plugin:vue/vue3-essential","eslint:recommended"]}
}

3. 监控

3.1 后端监控

Spring Boot Actuator

  • 依赖配置

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  • 配置 application.yml

    management:endpoints:web:exposure:include: "health,info,metrics"
    
  • 常用端点

    • /actuator/health:健康检查。
    • /actuator/metrics:性能指标(如内存、CPU、HTTP 请求耗时)。

Prometheus + Grafana

  • 集成 Prometheus
    添加依赖:

    <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
    

    访问 /actuator/prometheus 获取指标数据。

  • Grafana 配置:通过 Prometheus 数据源创建仪表盘。

日志监控(ELK Stack)

  • 日志配置(Logback)
    <configuration><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>localhost:4560</destination></appender><root level="INFO"><appender-ref ref="LOGSTASH" /></root>
    </configuration>
    

3.2 前端监控

错误跟踪(Sentry)

  • Vue 插件配置
    import * as Sentry from '@sentry/vue';Sentry.init({dsn: 'https://your-dsn@o123.ingest.sentry.io/456',integrations: [new Sentry.BrowserTracing(),new Sentry.Vue({ Vue })],
    });
    

性能监控(APM)

  • 使用 New RelicDatadog 的前端 SDK 监控页面加载时间、API 响应时间。

4. 预先编译

4.1 后端预编译

  • Maven 编译阶段

    mvn compile  # 仅编译 Java 代码
    
  • 构建缓存:利用 Maven 的 ~/.m2/repository 缓存依赖,减少重复下载。

4.2 前端预编译

Webpack 配置优化

  • 代码分割(Code Splitting)

    // vue.config.js
    chainWebpack(config) {config.optimization.splitChunks({chunks: 'all',minSize: 30000,minChunks: 1,maxAsyncRequests: 5,maxInitialRequests: 3,automaticNameDelimiter: '~',name: true,cacheGroups: {vendors: {test: /[\\/]node_modules[\\/]/,priority: -10},default: {minChunks: 2,priority: -20,reuseExistingChunk: true}}});
    }
    
  • Tree Shaking:通过 ES6 模块化自动删除未使用的代码。

  • 环境变量管理

    # .env.development
    VUE_APP_API_URL=http://localhost:8080/api
    

5. 容器部署

5.1 Docker 部署

Dockerfile(后端)

# 基础镜像
FROM openjdk:8-jdk-alpine
# 设置工作目录
WORKDIR /app
# 复制构建好的 JAR 包
COPY target/*.jar app.jar
# 暴露端口
EXPOSE 8080
# 启动命令
CMD ["java", "-jar", "app.jar"]

Dockerfile(前端)

# 使用 Nginx 作为静态资源服务器
FROM nginx:alpine
# 复制 Vue 打包后的 dist 目录到 Nginx 默认目录
COPY dist/ /usr/share/nginx/html/
# 暴露端口
EXPOSE 80

Docker Compose(多服务部署)

version: '3'
services:backend:build: ./spring-bootports:- "8080:8080"environment:SPRING_PROFILES_ACTIVE: prodfrontend:build: ./vueports:- "80:80"

5.2 Kubernetes 部署

部署 YAML 文件

# 后端 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: spring-boot-deploy
spec:replicas: 3selector:matchLabels:app: spring-boottemplate:metadata:labels:app: spring-bootspec:containers:- name: spring-bootimage: your-registry/spring-boot:latestports:- containerPort: 8080
---
# 前端 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: vue-deploy
spec:replicas: 2selector:matchLabels:app: vuetemplate:metadata:labels:app: vuespec:containers:- name: vueimage: your-registry/vue:latestports:- containerPort: 80
---
# 服务(Service)
apiVersion: v1
kind: Service
metadata:name: spring-boot-service
spec:selector:app: spring-bootports:- protocol: TCPport: 8080targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: vue-service
spec:selector:app: vueports:- protocol: TCPport: 80targetPort: 80
---
# Ingress(路由配置)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-service
spec:rules:- http:paths:- path: /pathType: Prefixbackend:service:name: vue-serviceport:number: 80- path: /apipathType: Prefixbackend:service:name: spring-boot-serviceport:number: 8080

5.3 CI/CD 流水线(GitHub Actions)

示例工作流(.github/workflows/ci-cd.yml)

name: CI/CD Pipelineon:push:branches: [ main ]jobs:build-backend:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Set up JDK 11uses: actions/setup-java@v2with:java-version: '11'distribution: 'adopt'- name: Build with Mavenrun: mvn clean package -DskipTestsbuild-frontend:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Install Node.jsuses: actions/setup-node@v3with:node-version: '16'- name: Install dependenciesrun: npm install- name: Build Vuerun: npm run builddeploy:needs: [build-backend, build-frontend]runs-on: ubuntu-lateststeps:- name: Push Docker Imagesuses: docker/build-push-action@v3with:context: ./spring-bootpush: truetags: registry.example.com/spring-boot:latestenv:REGISTRY_USER: ${{ secrets.REGISTRY_USER }}REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}- name: Deploy to Kubernetesrun: |kubectl apply -f k8s/deployment.yamlkubectl rollout status deployment/spring-boot-deploykubectl apply -f k8s/frontend-deployment.yamlkubectl rollout status deployment/vue-deploy

6. 总结

  1. 打包:后端用 Maven/Gradle,前端用 Vue CLI,生成可部署的 JAR 和静态资源。
  2. 测试:后端用 JUnit + Mock,前端用 Jest + Cypress。
  3. 监控:后端用 Actuator + Prometheus/Grafana,前端用 Sentry + APM。
  4. 编译优化:代码分割、Tree Shaking、环境变量管理。
  5. 部署:Docker 包装 + Kubernetes 部署,结合 CI/CD 实现自动化流水线。

通过以上步骤,可以高效地完成前后端分离应用的开发、测试、监控和部署。

http://www.dtcms.com/wzjs/157086.html

相关文章:

  • 网站建设方案报价成功的软文推广
  • 效果图网站seo诊断报告
  • 深圳西乡网站制作又一病毒来了比新冠可怕
  • 网站建设公司的市场营销方案模板商业推广费用一般多少
  • 校园网站的建设费用无锡网站制作
  • 广西网站建设服务怎么做信息流广告代理商
  • 郑州企业网站制作成都百度推广公司电话
  • 物流网站建设的小结网络营销是什么专业
  • 小萝做h视频网站西安市网站
  • 做ghost系统的网站有哪些自己做网站的流程
  • 罗湖商城网站设计价格平台推广员是做什么的
  • 自己如何创建网站培训机构退费法律规定
  • 怎么做动态网站php沈阳关键词自然排名
  • 中国纪检监察报电子版官网电脑优化软件
  • 网站开发工程师应聘书范文谷歌优化怎么做
  • 网络设计是做什么的珠海百度seo
  • 昆山做网站的西安计算机培训机构哪个最好
  • 做杂志的网站在线代理浏览网站免费
  • 京东网站设计分析网站优化网
  • 泉州哪里做网站seo网址超级外链工具
  • 黑河做网站公司网站优化公司大家好
  • wordpress批量修改图片tag沈阳seo排名收费
  • 烟台做网站优化哪家好2021百度最新收录方法
  • 做网站有什么用百度快速seo软件
  • 外贸网站建设哪家快速西地那非片吃了多久会硬起来
  • 纳森网络做网站多少钱兰州网络推广关键词优化
  • 网站建设管理规范南昌seo公司
  • 网站规划和建设进度百度推广入口登录
  • 虎门做英文网站百度seo技术优化
  • drupal网站建设湖南正规seo公司