@控制器
->@服务
->@repository
关于AOP
,我有以下一对:
PersonaservicePointcut
Personaserviceaspect
实际上,对save
方法应用了相同的方法。因此,在执行save
方法之前,将执行其他@before
或@around
建议,再次调用FindoNebyID
方法。如果实体已经存在,则必须抛出异常,比如异常B,它必须在@ControllerAdvise
中处理
请注意,我有3点/3advices使用FindoNebyID
方法。它用来检查实体是否存在。
例如:
@Pointcut(value=
"execution(* mypackage.PersonaServiceImpl.saveOne(otherpackage.Persona))
&& args(persona)")
public void saveOnePointcut(Persona persona){}
@Pointcut(value=
"execution(*
mypackage.PersonaServiceImpl.updateOne(otherpackage.Persona))
&& args(persona)")
public void updateOnePointcut(Persona persona){}
@Pointcut(value="execution(*
mypackage.PersonaServiceImpl.deleteOne(String)) && args(id)")
public void deleteOnePointcut(String id){}
@Pointcut(value="execution(*
mypackage.PersonaServiceImpl.findOneById(String))
&& args(id)")
public void findOneByIdPointcut(String id){}
我需要更改pointcut声明以指示如下内容:
@Pointcut(Alpha)
public void findOneByIdPointcut(String id){}
其中alpha
为:
为@service
的FindoNebyID
方法执行before/around建议,但如果它的调用是从PersonaserviceAspect
类的其他建议执行的,则永远不要执行。
@Around("PersonaServicePointcut.anyMethodPointcut()")
public Object aroundAdviceAnyMethod(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{
有可能实现这种方法吗?怎么做?
谢了。
可以用
!cflow(<pointcut>)
在您的示例中,您希望排除FindoNebyID
的那些执行,其中的执行位于您自己的通知的控制流中。如果建议应用于切入点表达式
@Pointcut("saveOnePointcut() || updateOnePointcut() || deleteOnePointcut()")
public void combinedPointcut() {}
可以通过以下方法排除:
!cflow(combinedPointcut())
!cflow(adviceexecution())
@Around("findOneByIdPointcut() && !cflow(combinedPointcut())")
public void aroundFind() {
....
}
我正在编写一个脚本,将MKV或AVI等视频文件转换成MP4,然后从web流媒体中准备它们。我希望我的输出使用H.264和AAC编解码器。 到目前为止,我的命令如下所示: 然而,当编解码器已经是H.264时,它仍然对其进行多路复用,它表示:(H264->libx264)。 如果我将'-vcodec h264'替换为'-vcodec copy',当编解码器是H.264时,它的速度会快得多,但如果输入文
实现SortedSet的Java类除了提供一些其他方法外,还应该提供一个迭代器,以升序迭代其元素。但我认为SortedSet接口规范无法强制执行它指定的这种行为约束。SortedSet只有几个方法,一个实现类可以实现这些方法,而实际上不必满足返回升序迭代器的要求,或者确实不需要有一个有效的比较器。 仅仅查看接口方法而不知道其名称,并不能告诉开发人员实现类应该实现的核心行为。 实现开发人员应该阅读J
我有一个关于智力的Java项目,本学期有多个练习要做。一些测试与这些练习有关。但是,由于生成失败,我无法运行测试,因为某些方法尚未在其他文件中实现。 例如,我有一个StackWithTwoQueues。我实现并关联的java文件,我有StackWithTwoQueuesTest。java文件。当我运行这个文件时,我得到“build failed”,因为文件MinMaxHeap中的一些方法。java
我计划使用Spring Batch。我们喜欢在响应前端请求的POD中启动新作业执行。 伪代码: 但我们不希望作业在前端pod中执行。为此,我们希望构建一个单独的微服务吊舱。 我看到了以下解决方案: > 从前端pod到sping-batpod执行一个rest调用并在那里开始工作。我可以这样做,但如果可能的话,我想跳过该步骤并将其集成到sping-batdb上。 在前端pod中,我创建了具有大小为零的
我得到了 我错过了什么?
问题内容: 我有一个使用外部jar的应用程序。我使用了eclipse,效果很好。我从eclipse导出为jar,创建了一个清单文件,该文件具有Class- Path:./cab.v1.jar,我将两个jar都放在了同一目录中。我在命令行中运行:java -jar myApp.jar 并为cab.v1.jar(另一个jar)中的类获取 java.lang.NoClassDefFoundError 也