小编nil*_*ils的帖子

最佳实践 - 多层架构和DTO

在stackoverflow上阅读了一些Q/As后,我仍然对在我的Web应用程序中正确实现DTO感到困惑.我目前的实现是一个(基于Java EE的)多层架构(具有持久性,服务和表示层),但是所有层都使用"公共"包,包含(以及其他)域对象.在这种情况下,层不能真正被认为是独立的.我打算逐步删除常见的包,但我遇到了各种挑战/问题:

  • 假设持久层将使用类myproject.persistence.domain.UserEntity(基于JPA的实体)来存储数据库或从数据库加载数据.要在视图中显示数据,我将提供另一个类myproject.service.domain.User.我在哪里转换它们?用户的服务是否有责任在两个类之间进行转换?这真的有助于改善耦合吗?
  • User类应该如何?它应该只包含不可变的getter吗?编辑现有用户的视图(创建新用户,使用现有用户对象的getter 等)不是很麻烦吗?
  • 我应该使用相同的DTO类(用户)向服务发送请求以修改现有用户/创建新用户还是应该实现其他类?
  • 通过使用myproject.service.domain中的所有DTO,表示层不会非常依赖于服务层吗?
  • 如何处理我自己的例外?我的当前方法重新抛出大多数"严重"异常,直到它们由表示层处理(通常记录它们并且用户被告知出现了问题).一方面我有一个问题,我再次hava共享包.另一方面,我仍然不确定这可以被视为"最佳实践".有任何想法吗?

谢谢你的任何答案.

java jpa multi-tier dto

15
推荐指数
2
解决办法
9847
查看次数

在开发模式下使用 Quarkus 的 Maven 多模块项目

我是 Quarkus 的新手,并尝试在 Maven 多模块项目中使用它。我的项目结构如下:

- quarkustest (pom)
  - quarkustest-application (jar)
  - quarkustest-backend (pom)
    - quarkustest-backend-rest-api (jar)
  - quarkustest-dependencies (pom)
  - quarkustest-parent (pom)
Run Code Online (Sandbox Code Playgroud)

应用程序模块使用 build-goal 执行 quarkus-maven-plugin。的quarkustest-backend-rest-api包含一个简单的REST控制器并因此也是一个beans.xml/src/main/resources/META-INF。rest-api-module 是应用程序模块的引用。

如果我使用 打包整个项目mvn package,则生成的 runner-jar 将按预期工作。但是,如果我尝试使用 以开发模式启动项目,则会出现mvn compile quarkus:dev以下异常:

错误] 无法在项目 quarkustest-application 上执行目标 io.quarkus:quarkus-maven-plugin:1.0.0.CR2:dev (default-cli):无法运行:无法解析 Quarkus 应用程序模型:无法解析依赖关系test.quarkustest:quarkustest-application:jar:1.0.0-SNAPSHOT: 找不到工件 test.quarkustest:quarkustest-backend-rest-api:jar:1.0.0-SNAPSHOT -> [帮助 1]

我不太确定如何解决这个问题。Quarkus 的多模块项目是否有任何最佳实践?我在这里做的任何明显错误?

编辑1(相关pom文件)

quarkustest-应用程序

<parent>
    <groupId>test.quarkustest</groupId>
    <artifactId>quarkustest-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>../quarkustest-parent</relativePath>
</parent>

<artifactId>quarkustest-application</artifactId>

<dependencies>
    <dependency>
        <groupId>test.quarkustest</groupId>
        <artifactId>quarkustest-backend-rest-api</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>io.quarkus</groupId> …
Run Code Online (Sandbox Code Playgroud)

java maven quarkus

13
推荐指数
1
解决办法
3175
查看次数

logging.properties中的多种格式

我的logging.properties中有两个处理程序:

handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
Run Code Online (Sandbox Code Playgroud)

两者都使用SimpleFormatter

java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
Run Code Online (Sandbox Code Playgroud)

但是现在我想要这些处理程序使用两种不同的格式。控制台处理程序应仅打印一条短消息。另一方面,文件处理程序应打印更详细的消息。但是如何为两个格式化程序使用不同的格式?以下无效:

java.util.logging.FileHandler.formatter.format = ...
Run Code Online (Sandbox Code Playgroud)

并使用

java.util.logging.SimpleFormatter.format
Run Code Online (Sandbox Code Playgroud)

下面的相应格式化程序也不起作用。有任何想法吗?我不想像变通办法那样实现自己的格式化程序...

java logging java.util.logging

5
推荐指数
1
解决办法
1027
查看次数

标签 统计

java ×3

dto ×1

java.util.logging ×1

jpa ×1

logging ×1

maven ×1

multi-tier ×1

quarkus ×1