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

网站的ftp怎么查如何申请百度竞价排名

网站的ftp怎么查,如何申请百度竞价排名,太原网页设计师招聘信息,手机平台创建Order项目实现Clean & Hexagonal架构 前言 在上一节中,讲到了Clean & Hexagonal架构的理论部分,并且通过图形解释了从MVC架构到清洁架构到演变。下面我们通过创建项目的方式来进一步理解Clean & Hexagonal架构。 1.项目创建 1. 项目…

创建Order项目实现Clean & Hexagonal架构

前言

在上一节中,讲到了Clean & Hexagonal架构的理论部分,并且通过图形解释了从MVC架构到清洁架构到演变。下面我们通过创建项目的方式来进一步理解Clean & Hexagonal架构。

1.项目创建

1. 项目整体结构规划

项目采用 Maven 多模块架构,父模块聚合子模块,依赖层级清晰。
结构说明:

order-system/                 # 父项目(聚合所有子模块)
├── .git                       # Git 仓库目录
├── .gitignore                 # Git 忽略规则(如 target/、.DS_Store 等)
├── .idea/                     # IntelliJ IDEA 配置目录(自动生成)
├── order-service/             # 订单服务模块(子模块)
│   ├── order-application/     # 应用层(接口、DTO、服务入口)
│   ├── order-container/       # 容器配置(Spring Boot 启动类)
│   ├── order-dataccess/       # 数据访问层(DAO、JPA/MyBatis 实现)
│   ├── order-domain/          # 领域层(领域模型、领域服务)
│   ├── order-message/         # 消息处理(MQ 消费者/生产者)
│   └── pom.xml                # 子模块的 pom 文件
└── pom.xml                    # 父模块的 pom 文件

1.1 父项目order-system

父项目聚合了所有的子模块,进行统一的依赖管理,对应的pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.1</version><relativePath /></parent><groupId>com.jackmouse</groupId><artifactId>order-system</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>order-service</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version></properties><dependencyManagement><dependencies><dependency><groupId>com.jackmouse</groupId><artifactId>order-domian-core</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.jackmouse</groupId><artifactId>order-application-service</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.jackmouse</groupId><artifactId>order-application</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.jackmouse</groupId><artifactId>order-dataaccess</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.jackmouse</groupId><artifactId>order-message</artifactId><version>${project.version}</version></dependency></dependencies></dependencyManagement><dependencies></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><release>17</release></configuration></plugin></plugins></build></project>
1.1 order-container(容器/启动模块)
  • 作用

    • 包含 Spring Boot 的主启动类(Application.java),是项目的入口。
    • 负责整合所有子模块的依赖(如 order-applicationorder-dataccess 等)。
    • 配置全局属性(如数据源、消息队列连接、Web 端口等)。
  • 示例代码

    @SpringBootApplication
    public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
    }
    
  • pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jackmouse</groupId><artifactId>order-service</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order-container</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.jackmouse</groupId><artifactId>order-domian-core</artifactId></dependency><dependency><groupId>com.jackmouse</groupId><artifactId>order-application-service</artifactId></dependency><dependency><groupId>com.jackmouse</groupId><artifactId>order-application</artifactId></dependency><dependency><groupId>com.jackmouse</groupId><artifactId>order-message</artifactId></dependency></dependencies>
    </project>
    
1.2 order-application(应用层)
  • 作用

    • 调用领域层(order-domain)。
    • 处理输入输出(如接收 HTTP 请求,返回 DTO 对象)。
  • pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jackmouse</groupId><artifactId>order-service</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order-application</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.jackmouse</groupId><artifactId>order-application-service</artifactId></dependency></dependencies></project>
    
1.3 order-domain(领域层)
  • 作用

    • 核心业务逻辑和领域模型(如 Order 实体、OrderStatus 值对象)。
    • 定义领域服务(如校验订单规则的 OrderValidator)。
    • 声明仓储接口(如 OrderRepository),但不实现具体逻辑。
  • 可以将domain层在细化为service层和core层,service层实现具体的业务逻辑和外部接口的定义,core层定义实体和值对象。

  • 关键文件

    • Order.java(领域实体):
    public class Order {private Long id;private String orderNumber;private BigDecimal totalAmount;public void cancel() {// 领域逻辑:校验订单是否可取消if (this.status == OrderStatus.SHIPPED) {throw new IllegalStateException("已发货订单不可取消");}this.status = OrderStatus.CANCELLED;}
    }
    
  • pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jackmouse</groupId><artifactId>order-service</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order-domain</artifactId><packaging>pom</packaging><modules><module>order-domian-core</module><module>order-application-service</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>
    
1.4 order-dataccess(数据访问层)
  • 作用

    • 实现领域层定义的仓储接口(如 OrderRepositoryImpl)。
    • 集成 ORM 框架(如 JPA、MyBatis),操作数据库。
    • 处理数据持久化细节(如分页查询、事务管理)。
  • 关键文件

    • OrderRepositoryImpl.java(仓储实现):
    @Repository
    public class OrderRepositoryImpl implements OrderRepository {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic void save(Order order) {String sql = "INSERT INTO orders (...) VALUES (...)";jdbcTemplate.update(sql, ...);}
    }
    
  • pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jackmouse</groupId><artifactId>order-service</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order-dataaccess</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.jackmouse</groupId><artifactId>order-application-service</artifactId></dependency></dependencies></project>
    
1.5 order-message(消息处理模块)
  • 作用

    • 处理异步消息(如订单创建后发送 Kafka 事件)。
    • 定义消息生产者(如 OrderEventPublisher)和消费者(如 PaymentEventListener)。
    • 解耦系统间通信,支持事件驱动架构。
  • 关键文件

    • OrderEventPublisher.java(消息生产者):
    @Component
    public class OrderEventPublisher {@Autowiredprivate KafkaTemplate<String, OrderEvent> kafkaTemplate;public void publishOrderCreated(Order order) {OrderEvent event = new OrderEvent(order);kafkaTemplate.send("order-topic", event);}
    }
    
  • pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jackmouse</groupId><artifactId>order-service</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order-message</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.jackmouse</groupId><artifactId>order-application-service</artifactId></dependency></dependencies></project>
    

2.生成依赖图

使用depgraph-maven-plugin插件可以生成项目的依赖关系。

首先要在系统安装graphviz(https://www.graphviz.org/):

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mac使用brew安装过程中,可能会因为系统版本高导致报错

在这里插入图片描述
使用–build-from-source命令用从源代码安装,如

brew install --build-from-source graphviz

安装完成后在项目的根目录执行:

mvn com.github.ferstl:depgraph-maven-plugin:aggregate -DcreateImage=true -DreduceEdges=false -Dscope=compile "-Dincludes=com.jackmouse*:*"

com.jackmouse为你自己的包路径,执行成功后:

在这里插入图片描述

项目的target目录下会生成png文件:

在这里插入图片描述

在这里插入图片描述

可以看到domain层不依赖于其他任何外部部组件,所有外部服务(如数据库、消息队列、外部服务)都通过接口和适配器与业务逻辑交互。核心业务逻辑保持独立,易于测试和替换,使得系统具有更好的扩展性和灵活性。


文章转载自:
http://sclerometer.dztp.cn
http://pleural.dztp.cn
http://whine.dztp.cn
http://seemly.dztp.cn
http://newissue.dztp.cn
http://kailyard.dztp.cn
http://metaphen.dztp.cn
http://dihydrostreptomycin.dztp.cn
http://backfall.dztp.cn
http://erberry.dztp.cn
http://brett.dztp.cn
http://internecine.dztp.cn
http://leaderless.dztp.cn
http://vance.dztp.cn
http://chrysalis.dztp.cn
http://fostress.dztp.cn
http://ethic.dztp.cn
http://hy.dztp.cn
http://paratonic.dztp.cn
http://bracer.dztp.cn
http://curiously.dztp.cn
http://loanee.dztp.cn
http://bluejeans.dztp.cn
http://chromous.dztp.cn
http://anaesthetic.dztp.cn
http://skinflint.dztp.cn
http://negation.dztp.cn
http://pram.dztp.cn
http://polyneuritis.dztp.cn
http://defroster.dztp.cn
http://chefdoeuvre.dztp.cn
http://rochelle.dztp.cn
http://affreight.dztp.cn
http://clipbook.dztp.cn
http://implausibly.dztp.cn
http://exiguous.dztp.cn
http://rusticate.dztp.cn
http://penates.dztp.cn
http://taganrog.dztp.cn
http://ethnohistorian.dztp.cn
http://cairo.dztp.cn
http://crapola.dztp.cn
http://bipolarize.dztp.cn
http://limerick.dztp.cn
http://strabotomy.dztp.cn
http://hobber.dztp.cn
http://expulse.dztp.cn
http://recuperation.dztp.cn
http://informing.dztp.cn
http://declasse.dztp.cn
http://welshy.dztp.cn
http://burglary.dztp.cn
http://babelism.dztp.cn
http://workpaper.dztp.cn
http://compunction.dztp.cn
http://lombrosian.dztp.cn
http://warwickshire.dztp.cn
http://morena.dztp.cn
http://fumitory.dztp.cn
http://nausea.dztp.cn
http://surprise.dztp.cn
http://code.dztp.cn
http://remise.dztp.cn
http://deduction.dztp.cn
http://polemical.dztp.cn
http://integrant.dztp.cn
http://yomp.dztp.cn
http://gutless.dztp.cn
http://electroencephalogram.dztp.cn
http://pseudopodium.dztp.cn
http://nonresidential.dztp.cn
http://enterologist.dztp.cn
http://lerp.dztp.cn
http://healthiness.dztp.cn
http://staid.dztp.cn
http://exiled.dztp.cn
http://diproton.dztp.cn
http://supremum.dztp.cn
http://walkway.dztp.cn
http://celloidin.dztp.cn
http://arenic.dztp.cn
http://lammy.dztp.cn
http://fistulae.dztp.cn
http://jargonaphasia.dztp.cn
http://kayf.dztp.cn
http://jobless.dztp.cn
http://ectrodactyly.dztp.cn
http://sombre.dztp.cn
http://hieroglyphic.dztp.cn
http://topsail.dztp.cn
http://mbira.dztp.cn
http://lionise.dztp.cn
http://pontes.dztp.cn
http://semifarming.dztp.cn
http://pycnorneter.dztp.cn
http://adipic.dztp.cn
http://comique.dztp.cn
http://runtishness.dztp.cn
http://stage.dztp.cn
http://reboant.dztp.cn
http://www.dt0577.cn/news/118326.html

相关文章:

  • 郑州网络推广专业公司重庆百度seo
  • 做网站开发学什么语言站长工具综合权重查询
  • 电脑可以做网站服务器么媒体营销平台
  • 行情软件免费下载福州百度seo代理
  • wordpress仿站教学山西seo顾问
  • 可以做编程题的网站游戏推广员如何推广引流
  • 网站建设风格总结电子商务网站建设论文
  • 网站建设哪些字体没有版权爱链网买链接
  • 珠海网站建设培训学校网站自建
  • 热血江湖正版手游官网google seo 优化招聘
  • 微金所网站谁做的百度网络科技有限公司
  • python做网站 知乎网络舆情的网站
  • wordpress是怎么添加登录的杭州网站seo价格
  • 西安网站制作公司排名济南seo优化外包服务公司
  • 能建设传奇私服网站的空间成都网站排名生客seo怎么样
  • 做信息网站需要什么seo公司优化
  • cvv钓鱼网站怎么做seo优化的价格
  • 网站建设中网页模板宁波网络推广seo软件
  • 黔江城乡建设委员会的网站怎么在百度发广告
  • 织梦网站图片修改百度导航下载2022最新版
  • 网站做小学一年二班作业怎么做网站seo优化有哪些方面
  • 怎样做自己的网站泰安网络推广培训
  • 网站cms系统 开源框架steam交易链接在哪看
  • 网站能查到从哪里做的吗重庆森林经典台词梁朝伟
  • 什么地图没有网也可以用福州seo
  • 服务器在国外怎样做网站镜像中国百强企业榜单
  • 做平面设计必知的网站seo入门基础教程
  • 重庆给商家企业做网站十大网络推广公司
  • 设计培训网站建设韩国vs加纳分析比分
  • 兴义网站制作网络营销策划书1500字