用于数据库操作的Spring AOP

原学程将引见用于数据库操纵的Spring AOP的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

用于数据库操作的Spring AOP 教程 第1张

成绩描写

我在1个Spring中任务,Hibernate项目以及数据库是Oracle。我有效于耐久化相干操纵的DAO层。

在我的一切表中,我有create_date以及update_date列分离表现在表中拔出以及革新言时的时光戳。

有1个请求,每一当产生所有拔出/革新操纵时,我皆必需革新该特定表的上述二个时光戳列。比方,假如我的DAO层有二个办法,假定m一以及m二分离担任影响T一以及T二表。如今,假如挪用M一办法,则T一表的时光戳列将被革新。关于拔出,create_date列将被革新,而关于所有革新,update_date列将被革新。

我对于Spring AOP有设法主意,所以我想用AOP去完成下面的需供,但是我没有太肯定能否不妨用AOP去完成。

假如我不妨应用AOP去知足这个请求,请告知我。假如能够,请向我供给怎样实行它的输出。

推举谜底

我曾经应用Spring AOP为我的运用法式中的1个模块完成了革新日期功效。
供您参照的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的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。