一次说全COLA应用架构

news2024/11/17 1:48:25

一,为什么需要好的应用架构

上图比较清晰地说明了好的应用架构的作用——去繁为简,化无序为有序。

二,关于COLA的几种定义

1,原版

GitHub - alibaba/COLA: 🥤 COLA: Clean Object-oriented & Layered Architecture

COLA 4.0:应用架构的最佳实践_cola实战_程序员万万的博客-CSDN博客

2,不知道什么的版本

COLA 架构_mob649e815da088的技术博客_51CTO博客

3,另外一种不知道什么的版本

COLA架构 入门-阿里云开发者社区

关于定义确实各说各的,我们可以忽略,只要关注一个本质就好了,那就是大家都提到的分层

简单来说,就是专一职责,专业的Layer做专业的事儿,解耦,避免臃肿。

下面贴一下,原作者的想法:

给 COLA 做减法:应用架构中的“弯弯绕设计”-阿里云开发者社区

三,示例项目的踩坑

1,下载源代码

地址:GitHub - alibaba/COLA: 🥤 COLA: Clean Object-oriented & Layered Architecture

下载解压

2, 安装项目组件

2.1 进到cola-archetypes目录,执行mvn install命令

2.2 进到cola-components目录,执行mvn install命令

3,生成样例项目

退到OLA-master目录执行下面命令,注意里面groupId,artifactId,version,package这些都可以改

mvn archetype:generate  -DgroupId=com.alibaba.demo -DartifactId=demoWeb -Dversion=1.0.0-SNAPSHOT -Dpackage=com.alibaba.demo -DarchetypeArtifactId=cola-framework-archetype-web -DarchetypeGroupId=com.alibaba.cola -DarchetypeVersion=4.0.0

如果过程中出现下图中错误,可以到自己本地的maven的settings文件中去掉snapshotPolicy这个标签

这一步完成之后,会在上级目录中生成一个demoWeb项目(名字就是上面你设定的artifactId),项目结构如下:

4,启动项目

进入到demoWeb目录下,执行mvn install -DskipTests命令,再进入到start目录执行mvn spring-boot:run 命令,就可以把服务启动起来。可以通过访问http://localhost:8080/helloworld来测试了

如果执行上面启动命令不行的话,可以在Idea中启动,或者先mvn clean package打包,再用java -jar启动。

这个样例项目的坑在于,一定要注意每个命令都要在正确的目录执行。

四,总结

没有最佳,只有适合。如无必要,勿增实体!

码字不易,记得点赞关注收藏哟!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1115985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】文件IO基础知识——上篇,文件描述符是什么??系统缓冲区又是啥??

目录 前文 一, 系统级——文件操作接口 a. open b. close c. write d. read 二,接口理解 那文件描述符——fd是什么呢? 三,文件描述符分配规则 原理 四,重定向——dup2 简易shell——重定向 五&#xff0c…

vue3+ts 使用vue-print-nb 打印功能【完美】

安装 npm i vue3-print-nb -s我的版本 0.1.4 注册 import { createApp } from vue import pinia from ./store import router from ./router import ./assets/css/main.scss import { globalRegister } from /global/register import ant-design-vue/es/message/style/css …

织造业的数字安全守护者:深入了解迅软DSE数据加密

客户简要介绍 某织造企业成立于2004年,工厂位于苏州平望,公司目前拥有先进纺织设备330台套和日本瑞士等前道配套设备,公司占地33亩、具有现代化标准厂房办公楼等3万平米。 某织造企业面料、功能性面料、新材料面料的生产商,公司坚…

UE5 ChaosVehicles载具 实现大漂移 (连载四)

载具设置成前驱模式 前轮摩擦力倍增x5 后轮摩擦力倍增x0.5

Linux 基础操作手记三(内存篇)

Linux 基础操作手记三 释放内存虚拟机彻底无网络测试网速设置虚拟内存交换空间未使用虚拟机设置虚拟内存无法开机问题GParted - 分配内存系统盘扩容自己 释放内存 sync && echo 3 > /proc/sys/vm/drop_caches 虚拟机彻底无网络 还原默认设置,静静的等待…

观测云产品更新 | 优化 SSO 管理、新增监控器类型、优化场景等

本期更新主要分为观测云更新、观测云部署版更新、DataKit 更新、集成更新等内容。详情见官网文档:https://docs.guance.com/release-notes/ 观测云更新 付费计划与账单 计费项【数据转发】统计逻辑变更为 “按照数据转发规则” 统计转发数据量大小。 SSO 管理 …

作为决策者,谁能拒绝这样一张数据可视化报表

数据分析是决策的一大助力,因此作为企业的管理决策者都会希望获得一份直观易懂、支持灵活自助分析的数据可视化报表,比如说由奥威BI数据可视化软件制作的这张BI报表。 名称:零售业数据分析驾驶舱 来源:奥威BI零售数据分析方案 …

网络通信 三要素

网络通信的三要元素 IP地址端口号协议package InetAddressTest;import java.net.InetAddress;public class InetAddress1 {public static void main(String[] args)throws Exception {// InetAddress的使用//1:获取本机IP地址对象InetAddress ip1 InetAddress.getLocalHost()…

智慧公厕:打造未来城市公共设施的智慧选择

随着信息技术的不断发展,城市公共设施需要实现个性化、高效化和智能化,其中包括公共厕所。智慧公厕是一种结合物联网、互联网、人工智能、云计算、大数据和传感感知等技术的新型公厕,旨在提高公共厕所管理效率、跨区域跨系统的联网管理、自动…

2023/10/30-LED灯驱动开发

k1.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h" char kbuf[128] {}; unsigned int major; //定义三个指针指向映射后的虚拟内…

基于北方苍鹰优化的BP神经网络(分类应用) - 附代码

基于北方苍鹰优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于北方苍鹰优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.北方苍鹰优化BP神经网络3.1 BP神经网络参数设置3.2 北方苍鹰算法应用 4.测试结果…

【C++ Primer Plus学习记录】使用new创建动态结构

在运行时创建数组优于在编译时创建数组&#xff0c;对于结构&#xff08;同一个结构可以存储多种类型的数据。&#xff09;也是如此。需要在程序运行时为结构分配所需的空间&#xff0c;这也可以使用new运算符来完成。通过使用new&#xff0c;可以创建动态结构。同样&#xff0…

2023.10.20期中考核复现(misc)

杂项题就是2023陇剑杯的题目&#xff0c;可能还是不感兴趣吧&#xff0c;自从打完蓝帽杯之后除了web以外什么都没看 flow analysis 1 题目&#xff1a;What is the backdoor file name that comes with the server?( Including file suffix) 服务器附带的后门文件名是什么&am…

CDN加速与DDoS攻击防护:保障网站稳定与用户体验

在今天的数字时代&#xff0c;网络性能和安全性是网站运营的两个至关重要的方面。CDN&#xff08;内容分发网络&#xff09;不仅可以加速网站的内容交付&#xff0c;还可以在防护DDoS&#xff08;分布式拒绝服务&#xff09;攻击方面发挥关键作用。本文将深入探讨CDN如何加速网…

【工具-idea】git checkout error: unable to read askpass response

文章目录 一. 问题描述&#xff1a;二. 解决方案1. 方案一2. 方案二 一. 问题描述&#xff1a; 更新idea到2023.2版本之后&#xff0c;拉取公司内部代码出现如下报错&#xff1a; git checkout error: unable to read askpass responseerror: unable to read askpass response…

如何优雅的进行Controller全局异常处理?

【Spring Boot系列】 如何优雅的进行Controller全局异常处理&#xff1f; 在进入正题之前&#xff0c;先给大家看一段代码&#xff0c;如下所示。 package com.panda.handle_try_catch_gracefully.controller;import com.panda.handle_try_catch_gracefully.common.Result; i…

教你使用processon快速绘制一张业务流程图?

产品经理在日常工作中经常需要和业务流程图打交道&#xff0c;它能很好地帮助我们梳理业务&#xff0c;高效表达需求&#xff0c;避免做无用功。 对于刚入门的PM来说&#xff0c;对业务流程图完全摸不着头脑的大有人在&#xff0c;今天从业务流程图的基本介绍、分类、业务流程…

【深度学习】Inception模型结构解析,关键词:Inception-v1、v2、v3、v4、Inception-ResNet-v1、Inception-ResNet-v2

目录 1.Inception-v1 1.1 Introduction 1.2 Inception结构 1.3 GoogLeNet 参考文献 2.Inception-v2 2.1 introduction 2.2 BN算法 参考文献 3.Inception-v3 3.1 General Design Principles 3.2 Factorizing Convolutions with Large Filter Size 3.3 其他思想 参…

Spring Security登录账户自定义与数据持久化(5)

1、用户自定义 在前面的案例中&#xff0c;我们的登录用户是基于配置文件来配置的(本质是基于内存)&#xff0c;但是在实际开发中&#xff0c;这种方式肯定是不可取的&#xff0c;在实际项目中&#xff0c;用户信息肯定要存入数据库之中。 Spring Security支持多种用户定义方…

Python如何实现多线程编程

目录 线程的创建 线程的管理 线程的同步 线程池 线程同步和锁 总结 Python是一种广泛使用的编程语言&#xff0c;它具有丰富的库和工具&#xff0c;可以用来实现多线程编程。多线程编程是一种并行计算技术&#xff0c;它通过将任务划分为多个独立的任务并利用多个线程同时…