Java 接口中的POJO

Java 接口中的POJO,java,json,xml,dependency-injection,jersey,Java,Json,Xml,Dependency Injection,Jersey,为了进行研究,我编写了一个songWebservice,这是一个使用Jersey的REST服务,部署在Tomcat中。数据库是一个本地json文件。dataService有一个接口ISongDB,与依赖项注入和抽象绑定一起使用。都很好 现在(下一个任务)将改进songWebService,并用外部数据库替换本地json 为了避免复制接口、导入无用的实现或将其全部放在一个项目中,我将接口移动到一个独立的项目中,我在pom.xml中引用了该项目。现在我有两个项目,包括: -songWebServic

为了进行研究,我编写了一个
songWebservice
,这是一个使用Jersey的REST服务,部署在Tomcat中。数据库是一个本地json文件。
dataService
有一个接口
ISongDB
,与依赖项注入和抽象绑定一起使用。都很好

现在(下一个任务)将改进
songWebService
,并用外部数据库替换本地json

为了避免复制接口、导入无用的实现或将其全部放在一个项目中,我将接口移动到一个独立的项目中,我在pom.xml中引用了该项目。现在我有两个项目,包括:

-songWebServiceInterface
  -src.main...songWebService
    - web
      - ISongWebService                             [ Song getSong(id); int postSong(song) ]
      - AbstractSongWebService impl ISongWebService [ protected ISongDB;]
    - database
      - ISongDB                                     [ Song getSong(id); int postSong(song) ]
      - Abstract impl ISongDB                       [ protected abstract void init() ]
    - pojo ???


-songWebServiceFileDB
  -src.main...songWebService
    - web
      - SongWebService extends AbstractSongWebService      
    - database
      - FileSongDB extends AbstractSongDB                
    - pojo ???
我的问题是POJO(
歌曲

首先在接口项目中,我使用了一个接口
ISong
,所有属性都有getter和setter。在fileDB项目中,我放置了一首
Song
实现
ISong
。在对象映射之前感觉很好。我无法在
ISong
中转换json或xml并将其作为
Song
通过web传递,也无法在我的文件中接收json或xml并将其作为
ISong
传递

我真的认为这可以工作,但我没有发现如何映射接口的提示。当然,我将
歌曲
绑定到
ISong
,但是缺少了其他内容。请提供一个模式和/或示例

一个变通解决方案是将
歌曲
直接放置在接口项目中,而不使用接口。这是可行的,但它确实很难看——现在我需要在接口项目中定义与数据库相关的注释和与映射/编组相关的注释,而这并不是我想要的(也许我希望在不同的实现中使用不同的数据库结构)。 我曾考虑过使用反射在实现中“按代码”添加注释,但我认为这不是应该的方式

我确信这有一个共同的模式,但我迷路了

我应在何处以及如何实施POJO,目标如下:

  • 在接口中使用它们来定义方法
  • 在实现中使用注释和自定义逻辑对其进行自定义

您无法将JSON转换为接口-您需要创建一个类,即两端都需要该类

为数据对象使用接口实际上毫无意义。将数据/模型类放在接口工件中,而不是为它们使用接口——一个模型类不太可能需要两种不同的实现

至于在界面工件中不需要与存储相关的注释,您是对的,这感觉像是糟糕的设计。我的方法是,现在涉及两种不同的模式:

  • 用于JSON通信的模型
  • 数据存储模型
我将使它们成为两组不同的类,在接口工件中共享RESTAPI模型,并在DB工件中保留存储模型/DTO