Java,使用spring配置企业应用程序和Web应用程序: should they share the spring context?

标签 java spring applicationcontext

我有一个基于 spring 集成的事件驱动应用程序。 该应用程序由4个模块组成:领域(模型对象)、持久化(daos)、核心(基于spring集成的业务逻辑)服务(MDB)。

每个模块都是一个 Maven 项目。该应用程序打包在 EAR 中并部署在 weblogic 上。

spring 上下文在所有模块之间共享。

现在我必须开发一个 Web 应用程序来公开域的子集:因此我的 Controller 应该使用一些 daos 和一些域对象。 处理这个问题的最佳实践是什么? Web 应用程序是否应该共享所有耳簧上下文? 或者最好创建一个“临时”Web 应用程序 spring 上下文,在其中重新定义我需要的所有内容? (例如 daos)。

最佳答案

似乎您会从功能分层中受益,例如而不是

|- persistence (daos)
|- domain (model objects)
|- core (biz logic based on spring-integration)
|- services (MDB)

您可以以功能性的方式对您的应用程序进行分层。假设您的应用程序进行交易:

|- broker
|- product
    |- underlying
    |- option
    |- future
    |- forward
    |- ..
|- feed 
|- valuation
|- ...

broker下,您将拥有broker-persistencebroker-service等。当然,您应用程序的业务领域可能是不同,这是一个简单的例子,但它说明了这一点。

这样,您仍然可以将所有内容包含在您的 EAR 中,并且对于可以包含/导入到您的 Web 应用程序中的内容具有更大的灵 active 。

例如,您甚至可以创建与 product.war 分开的 broker.war。这也意味着您可以重新部署broker.war,而无需关闭product.war。您的业​​务领域可能不需要它,但这是一项很好的能力,只有根据业务需求/领域而不是技术堆栈进行分层时才能实现。/p>

顺便说一句,仅对于 MDB,无需使用 EAR 让事情变得复杂,您可以使用 Spring 的 Message Driven POJOs它将由 Spring 容器简单地控制。

关于Java,使用spring配置企业应用程序和Web应用程序: should they share the spring context?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7632699/

相关文章:

java - 关于保存和打印数组中的不同数字

java - 当我从具有其他外键的表中删除条目时,相应的记录也不会被删除

java - 从 Spring 访问 EJB 类

Spring Boot 和 Tomcat : Is it better to use embeded Tomcat or external Tomcat installation.

java - 有没有一种方法可以在没有 xml 或属性文件的情况下将 java 变量/对象存储在应用程序上下文中

java - 从对象填充表 Javafx

java - 使用 RequestParam 上传文件

java - Spring 4安全访问被拒绝(用户不是匿名的)

java - 当我在 Web 应用程序中保留 spring-servlet.xml 时,applicationContext.xml 未加载

java - Dispatcher-servlet 无法映射到 websocket 请求