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

时间:2011-04-05 07:59:28

标签: design-patterns rest java-ee

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

  1. 数据库通过JDBC

  2. ERP,通过SOAP进行沟通

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

  4. 在我的关卡中,如果我的业务层和DAO之间存在松耦合,我能做什么?是否有一些设计模式可以帮助我?

    非常感谢你的帮助!!

2 个答案:

答案 0 :(得分:2)

希望这会有所帮助:

  • Layer your system:正如您在答案中提到的那样,始终从数据访问逻辑中分离出bz逻辑。我建议在不同的二进制模块中实现不同的层,这样可以灵活地在不同的层中部署不同的层(如果你真的需要它)。

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

  • Dependency injection:在应用程序层(GUI,应用程序服务器......)中,在初始化逻辑(bootstrapping)中,您可以使用依赖性容器来注入存储库实现(在bz逻辑中的数据访问层)。有很多带有依赖注入容器的开源框架。

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

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

谢谢,

Juanjo

答案 1 :(得分:0)

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

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

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

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

虽然这是一本旧书,但大部分信息都在Expert One-on-One J2EE Design and Development中。但我会说这些是标准的Enterprise Java最佳实践。