java - 在 Java 项目中的实体中实现区域特定字段

标签 java spring aop aspectj

在我的项目中,需要在任何需要的实体中添加区域特定字段。当项目在特定区域运行时,这些字段将可见。我想这可以通过使用 pom.xml 中的配置文件或使用 web.xml 来完成。

例如:

员工有姓名、工资、年龄。将会有一个附加字段“regionalAge”,它将根据回历保存年龄。

考虑到我们在 jsp 上手动输入这些详细信息,我想仅在需要时显示区域特定字段。

我想通过使用面向方面编程来实现这一点。当前的实现对开发人员不太友好。有什么建议吗?

附注我是 AOP 的新手,希望通过这个示例学到同样的东西。

问)目前是如何实现的?

A) 已创建一个新实体:RegionalData。该实体的字段数量有限,编号如regionalField1、2等。该实体需要嵌入到其中需要区域特定字段的任何实体中。坚持同样的事情已经得到处理。

有一个 xml 文件:regionalSpecificMapping.xml,其中映射了我希望在其中使用的“jspName”和“源实体名称”。 还有一个区域映射表执行相同的操作,并将字段名称映射到源实体名称和区域字段编号 #1/2/3。

这会导致在我们嵌入区域数据的实体的表中创建有限数量的列。在这些列中,存储了区域特定值。

我正在寻找另一种方法,因为当前的方法有时会无法包含更多字段,并且必须再次包含更多字段。

最佳答案

第一个也是最简单的方法是在类中包含所有区域字段,但使它们可为空。例如,Employee 类将具有“regionalAge”,但仅当它与当前区域相关时才会对其进行初始化。在表示层 (jsp) 中,您应该仅显示不为空的字段。

作为此解决方案的变体,您可以使用 java 8(如果您使用的是 java 8)或 guava(如果您仍在以前的版本)中的Optional

第二个解决方案是使用基Employee类并将其扩展到特定区域。 Employee 已实现并打包到您的核心项目中。但是您可以实现多个扩展,这些扩展提供自己的类,这些类扩展Employee 并添加其字段。您还可以定义创建实体的工厂,并在每个子项目中重新定义该工厂,因此可以使用通用方式完成实体的实例化。

关于java - 在 Java 项目中的实体中实现区域特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35268030/

相关文章:

java - 同时读取 .csv 文件

spring - 使用spring-test-mvc进行单元测试REST Controller

java - 有时,类在加载时编织期间不会被编织

java - 使用 aop.xml 在 AspectJ 中编织加载时间

java - 如何通过不获取另一个案例的值来在 switch case 中创建 if 语句?

java - Saxon:将 xdmNode 转换为 org.w3c.dom.Node

java - 在 Spring MVC Controller 层中,@Scope ("prototype") 与 @Scope ("singleton")

java - 如何手动包含 maven 更新由于防火墙限制而无法获取的 jar 文件

spring - @Transactional 方面的建议可能吗?

java - ScheduledThreadPoolExecutor 的任务调度有多准确