J2EE设计模式——如何使应用程序独立于后端服务



我正在尝试开发一些RESTful web服务,这些服务必须访问一些后端系统的数据。这些后端源可以是以下任意一个:

  1. JDBC数据库

  2. ERP,通过SOAP通信

  3. 另一个J2EE应用程序,通过SOAP或REST进行通信。

在我的级别上,我能做的最好的事情是在我的业务层和DAO之间实现松耦合?有没有什么图案可以帮到我?

非常感谢你的帮助!

希望对您有所帮助:

  • 分层你的系统:正如你在回答中提到的,总是从数据访问逻辑中分离bz逻辑。我建议在不同的二进制模块中实现不同的层,这将使您能够灵活地在不同的层中部署不同的层(如果您确实需要的话)。

  • 存储库模式:业务层对如何使用bz逻辑中的某些实体执行数据访问操作具有抽象定义。存储库中的方法总是使用bz逻辑中定义的实体作为参数(存储库总是用bz语言"对话")。一旦在bz层中定义了存储库接口,就可以在一个单独的层中实现它们:数据访问层。

  • 依赖注入:在应用层(GUI,应用服务器,…)中,在初始化逻辑(引导)中,您可以使用依赖容器在bz逻辑中注入存储库实现(在数据访问层中定义的那些)。有很多开源框架都有依赖注入容器。

使用这3种模式,您可以将DA逻辑与bz逻辑分离。

请注意,这是一个非常简短的回答,我建议你花点时间阅读以下书籍:

  • 企业应用程序架构模式
  • 领域驱动设计

谢谢,

Juanjo

我希望我正确理解了你的问题。

我目前正在开发一个应用程序,它使用JAX-WS RESTful web服务来访问数据。数据可以来自各种不同的来源(在我们的例子中是两个不同的数据库和一个Lucene索引)。

我认为,在不了解你的具体情况下,我只能推荐我们使用的典型方法:

  • 代码指向接口,而不是实现。因此,为您想要的每个DAO创建接口,并让您的业务层引用该接口而不是实现。
  • 使用依赖注入(如Spring框架)来配置和注入这些dao,这些dao可以指向多个数据源等。这样,业务层完全不知道数据来自哪里。

虽然这是一本旧书,但大部分信息都在Expert一对一J2EE设计与开发中。但我要说的是,这些都是标准的企业Java最佳实践。

最新更新