Tag: aspectj

Spring MVC +在建议之前检查安全性

我正在测试Spring AOP框架并提出以下问题。 我有以下代码: package danny.test.controllers; @Controller public class MyController{ @Autowired private DaoService service; @RequestMapping(value=”/save”,method = RequestMethod.POST) public String addUser(@Valid MyClass myClass, BindingResult result){ service.save(myClass); return “Ok”; } 我想在Advice方面之前创建以检查用户会话中的用户安全性。 @Aspect public class Profiler { @Pointcut(“execution(* danny.test.services.DaoServices.*.*(..))”) public void methods(){} @Before(“methods()”) public void checkSecurity() throws Throwable{ //check session if user is authenticated…. } } 我不知道该怎么做是取消执行DaoServices.save方法,如果用户未经过身份validation并导致控制器返回任何其他值而不是“ok”。 我可以做吗? 有人能指出我这样的例子吗? […]

使对象弹簧管理

如何管理已存在的对象弹簧? 我想使用aspectj将它连接到Springs AoPfunction。 我知道这是一个挑战,因为Spring AoP使用可能与对象一起创建的动态代理。 我为什么需要这个? 我有一个第三方类,它接受一个只在运行时知道的构造函数参数,因此我似乎无法将它添加到我的applicationContext或使用spring FactoryBean接口进行构造。 还有别的办法吗? 我已经尝试了以下但没有取得很大的成功: Obj obj = new ThirdPartyObj(“runtime constructor arg”); appContext.getAutowireCapableBeanFactory().initializeBean(obj, “Obj”); 它可能是弹簧管理的,但我仍然不能用它来触发方面。 [编辑] axtavt指出问题是我不使用从initializeBean(..)返回的对象。 提到的两种方法都有效,但前提是: 使用接口ObjInterface obj = (ObjInterface) ac.getBean(“obj”, args); 或者我们会得到一个: java.lang.ClassCastException: $Proxy28 cannot be cast to com.company.Obj 不使用接口但启用CGLIB 。 这需要一个非私有的默认构造函数,否则我们将获得: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given

SpringAOP与AspectJ的介绍

我是SpringAOP的新手。 我想写一些简单的介绍示例,但无法清楚地了解它必须如何工作。 在文档中我发现: 简介:代表类型声明其他方法或字段。 Spring AOP允许您向任何建议的对象引入新接口(和相应的实现)。 例如,您可以使用简介使bean实现IsModified接口,以简化缓存。 (引言在AspectJ社区中称为类型间声明。) 我写了一个简单的例子:我用一个方法编写简单的类 public class Test { public void test1(){ System.out.println(“Test1”); } } 然后我编写实现此接口的接口和类 public interface ITest2 { void test2(); } public class Test2Impl implements ITest2{ @Override public void test2() { System.out.println(“Test2”); } } 最后我的方面 @Aspect public class AspectClass { @DeclareParents( value = “by.bulgak.test.Test+”, defaultImpl = Test2Impl.class ) public […]

方面在运行时编织

我正在寻找一种Java解决方案,它允许我在运行时使用AOP在已经运行的代码之上编写新代码。 关键是不要求重启JVM。 此外,我想在运行时删除编织,让旧代码在编织之前运行。 我在想AspectJ加载时编织+运行时类加载/卸载会做到这一点。 有人试过吗? 有什么建议? 谢谢。

在Eclipse项目中混合AspectJ和Scala

任何人都能够在Eclipse 3.6中将Scala和AspectJ(AJDT)完美地结合在一起? 似乎Scala的织布工与AspectJ的织布工冲突。 我希望我只是缺少一些东西。 编辑:在同一个项目中很好地玩

Spring加载时编织没有检测用@configurable注释的类

我无法让AspectJ在我的主项目中使用@configurable注释的类上执行加载时间编织。 没有设置字段,也没有触及任何设置器。 我不认为配置本身存在问题,因为我已经解压缩了配置并在较小的沙箱项目上进行了测试。 只是为了它,我会把它包含在这个问题中。 所以,我想知道: 大项目中是否有任何可能阻碍Spring / AspectJ检测此特定类的内容? 有没有办法检查spring是否甚至意识到问题中的class级? 最后,无论我提取什么代码(请原谅混淆): 从配置XML: (…) 而class级本身: @Configurable public class ClassToBeWeaved { private InjectedBean injectedBean; @Required public void setInjectedBean() { … } } 编辑: 好吧,事实certificate它由于循环依赖而无法正常工作。 哦,亲爱的,我喜欢处理遗留代码。 不过,我原来的问题仍然存在。

Spring AOP:@annotation(注释)

我(当然)尝试使用许多我不太了解的结构来维护项目。 在试图找出Spring中的AOP使用过程中,我遇到了带有以下注释的方法: @Around(value =“@ annotation(annotation)”) 所以@Around意味着我们在AOP中执行方法切入点的’around’版本,我明白了。 我不知道其他部分是什么意思。 Spring文档提供以下内容: @annotation – 限制匹配到连接点的主题,其中连接点的主题(在Spring AOP中执行的方法)具有给定的注释 我不知道这意味着什么 – “在Spring AOP中执行的方法”听起来像建议的方法,但我不知道我(或Spring)如何找出建议的方法。 听起来它是具有“给定注释”的方法,但如果是这样,那么给出了什么注释? 这个注释建议了哪些方法? 还有什么意思呢?

AspectJ切入特定方法中的方法调用

我想创建一个切入点来定位从特定方法调用方法。 采取以下措施: class Parent { public foo() { //do something } } class Child extends Parent { public bar1() { foo(); } public bar2() { foo(); } public bar3() { foo(); } } 我希望在方法bar1()和bar3()中对foo()的调用有一个切入点 我在想类似的东西 pointcut fooOperation(): call(public void Parent.foo() && (execution(* Child.bar1()) || execution(* Child.bar3()) ); before() : fooOperation() { //do something else } […]

为aspectj运行JDK8

我正在尝试使用JDK8运行aspectj-maven插件。 但它给出的错误如“java.lang.CharSequence类型无法解析。它是从所需的.class文件间接引用的” 有关如何解决的任何帮助,或者aspectj-maven-plugin是否支持JDK8。 我正在使用1.6版本的aspectj – maven-plugin。

为什么服务器抱怨aspectOf丢失?

我正在尝试在AspectJ中注入Spring bean,就像下面显示的代码一样,无论如何我的服务器(WAS Liberty Profile)一直在抱怨方法aspectOf缺失。 我可以知道如何解决这个问题? 应用程序的context.xml 上下文文件A.XML JAVA代码 @Aspect public class LoggingAspect { … }