gpt4 book ai didi

Spring依赖注入(inject)或方面编程

转载 作者:行者123 更新时间:2023-12-04 07:10:35 24 4
gpt4 key购买 nike

我需要几个类中的方法,这些方法必须始终遵循特定的前后模式。

公共(public)无效方法(X x,Y y){

//************重复部分开始******************/

AFrameworkClass aFrameworkClass = new AFrameworkClass (this.memberVariable,"SomeString");

尝试 {

  aFrameworkClass.aFrameworkMethod( x,y); 
aFrameworkClass.anotherFrameworkMethod(x,y);
aFrameworkClass.yetAnotherFrameworkMethod(x);
aFrameworkClass.doPreProcessing();

Throwable t = null ;

//************重复部分结束 ******************/
  try { 
// code will vary according to the business logic
}
catch (Throwable t) {
// code will vary according to the business logic
}

//************重复部分开始******************/
  aFrameworkClass.doPostProcessing(); 

}
最后 {
aFrameworkClass.doCleanup();

}

//************重复部分结束 ******************/

}

是否可以使用 Spring 框架来完成此方法中重复部分的逻辑,而不必在我的各种类中一遍又一遍地编写这些代码?如果有怎么办?

最佳答案

绝对可以通过 Spring 的 AOP 支持来完成。您可以将第一部分应用为“之前”建议,将第二部分应用为“最终”建议,或者您可以将两者都应用为“围绕”建议并以编程方式调用目标方法,如下所示:

methodInvocation.invoke(); // returns Object

如果你想在 XML 中声明你的切面,你可以在这里阅读如何做:

http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-schema
http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-schema-advice-before
http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-schema-advice-after-finally
http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj-around-advice

或者如果你想用注释来做,这里有信息:

http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj

就我个人而言,我更喜欢使用 XML,因为可以在不重新编译应用程序的情况下更改方面的行为。假设您有一个多模块项目,其中 B 依赖于 A。A 包含可重用的建议,并且正在使用注释来处理订单、切入点等。如果您需要更改该行为,则必须重新构建 A。如果您在项目 B 中使用 XML要从项目 A 配置方面,不需要重建 A。

我的感觉是,当您在类中定义行为以及如何在 XML 中应用该行为时,建议更可重用。

关于Spring依赖注入(inject)或方面编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/437373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com