Spring AOP for database operation(用于数据库操作的Spring AOP)
问题描述
我在一个Spring中工作,Hibernate项目和数据库是Oracle。我有用于持久化相关操作的DAO层。
在我的所有表中,我有create_date
和update_date
列分别表示在表中插入和更新行时的时间戳。
有一个要求,每当发生任何插入/更新操作时,我都必须更新该特定表的上述两个时间戳列。例如,如果我的DAO层有两个方法,假设m1和m2分别负责影响T1和T2表。现在,如果调用M1方法,则T1表的时间戳列将被更新。对于插入,create_date
列将被更新,而对于任何更新,update_date
列将被更新。
我对Spring AOP有想法,所以我想用AOP来实现上面的需求,但我不太确定是否可以用AOP来实现。
如果我可以使用AOP来满足这个要求,请告诉我。如果可能,请向我提供如何实施它的输入。
推荐答案
我已经使用Spring AOP为我的应用程序中的一个模块实现了更新日期功能。 供您参考的PFB代码
希望这将有所帮助。 我想知道是否可以对变量也有切入点。我知道这在Spring的方面j实现中可能是不可能的。但是任何解决办法:p
**
* @author Vikas.Chowdhury
* @version $Revision$ Last changed by $Author$ on $Date$ as $Revision$
*/
@Aspect
@Component
public class UpdateDateAspect
{
@Autowired
private ISurveyService surveyService;
Integer surveyId = null;
Logger gtLogger = Logger.getLogger(this.getClass().getName());
@Pointcut("execution(* com.xyz.service.impl.*.saveSurvey*(..)))")
public void updateDate()
{
}
@Around("updateDate()")
public Object myAspect(final ProceedingJoinPoint pjp)
{
// retrieve the runtime method arguments (dynamic)
Object returnVal = null;
for (final Object argument : pjp.getArgs())
{
if (argument instanceof SurveyHelper)
{
SurveyHelper surveyHelper = (SurveyHelper) argument;
surveyId = surveyHelper.getSurveyId();
}
}
try
{
returnVal = pjp.proceed();
}
catch (Throwable e)
{
gtLogger.debug("Unable to use JointPoint :(");
}
return returnVal;
}
@After("updateDate()")
public void updateSurveyDateBySurveyId() throws Exception
{
if (surveyId != null)
{
surveyService.updateSurveyDateBySurveyId(surveyId);
}
}
}
这篇关于用于数据库操作的Spring AOP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:用于数据库操作的Spring AOP
基础教程推荐
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 降序排序:Java Map 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01