标签: aop

AspectJ有什么用?

首先让我注意一下,我使用AspectJ,我喜欢它,但我还能做些什么呢.

我知道AspectJ可以用于日志记录.在某些情况下,它用于事务控制 - 主要与注释一起实现.AspectJ也可以用于增强类(代码生成)方法,就像Spring Roo一样.

但我相信AspectJ和AOP一般可以用于:日志记录,事务控制和模拟部分类.

那么AspectJ和AOP的其他有用用例是什么?

java aop aspectj aspects

41
推荐指数
3
解决办法
2万
查看次数

使用aop对性能的影响

我们已经开始使用spring aop来实现我们应用程序的交叉切割(目前的安全性和缓存).

我的经理担心这项技术对性能的影响,尽管他完全理解这些技术带来的好处.

我的问题,您是否遇到过使用aop(特别是spring aop)引入的性能问题?

performance aop spring spring-aop

40
推荐指数
4
解决办法
2万
查看次数

Java动态代理的性能成本

许多现代框架(Spring,Hibernate)使用Java动态代理提供了非常好的动态行为,但与之相关的确切性能成本是多少?是否有针对Sun JVM的公共基准测试?

java performance aop dynamic-proxy

38
推荐指数
2
解决办法
1万
查看次数

Spring 3.0:无法找到XML架构命名空间的Spring NamespaceHandler

我的设置非常简单:我有一个网络前端,后端是弹簧接线.

我正在使用AOP在我的rpc服务上添加一层安全性.

这一切都很好,除了网络应用程序在发布时中止的事实:

  [java] SEVERE: Context initialization failed
     [java] org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/aop]
     [java] Offending resource: ServletContext resource [/WEB-INF/gwthandler-servlet.xml]

这是我的xml配置文件的片段:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    <aop:config>
        <aop:aspect id="security" ref="securityAspect" >
            <aop:pointcut id="securedServices" expression="@annotation(com.fb.boog.common.aspects.Secured)"/>
            <aop:before method="checkSecurity" pointcut-ref="securedServices"/>
        </aop:aspect>
    </aop:config>
Run Code Online (Sandbox Code Playgroud)

我读过互联网,它可能是我的类加载问题的核心.令人怀疑,因为这是我的WEB-INF/lib目录:

./WEB-INF/lib
./WEB-INF/lib/aopalliance-alpha1.jar
./WEB-INF/lib/aspectj-1.6.6.jar
./WEB-INF/lib/commons-collections.jar
./WEB-INF/lib/commons-logging.jar
./WEB-INF/lib/ehcache-core-1.7.0.jar
./WEB-INF/lib/ejb3-persistence.jar
./WEB-INF/lib/hibernate
./WEB-INF/lib/hibernate/antlr.jar
./WEB-INF/lib/hibernate/asm.jar
./WEB-INF/lib/hibernate/bsh-2.0b1.jar
./WEB-INF/lib/hibernate/cglib.jar
./WEB-INF/lib/hibernate/dom4j.jar
./WEB-INF/lib/hibernate/freemarker.jar
./WEB-INF/lib/hibernate/hibernate-annotations.jar
./WEB-INF/lib/hibernate/hibernate-shards.jar
./WEB-INF/lib/hibernate/hibernate-tools.jar
./WEB-INF/lib/hibernate/hibernate.jar
./WEB-INF/lib/hibernate/jtidy-r8-20060801.jar
./WEB-INF/lib/jabsorb
./WEB-INF/lib/jabsorb/jabsorb-1.3.1.jar
./WEB-INF/lib/jta.jar
./WEB-INF/lib/jyaml-1.3.jar
./WEB-INF/lib/postgresql-8.4-701.jdbc4.jar
./WEB-INF/lib/sjsxp.jar
./WEB-INF/lib/spring
./WEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.asm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.aspects-3.0.0.RELEASE.jar …
Run Code Online (Sandbox Code Playgroud)

java aop spring

38
推荐指数
4
解决办法
12万
查看次数

您是否在生产软件中使用AOP(面向方面​​编程)?

在我看来,AOP是一个有趣的编程范例.但是,目前还没有关于stackoverflow的讨论(至少我找不到它们).你对此有何看法?你在项目中使用AOP吗?或者你认为它是一种利基技术,不会长时间存在或者不会成为主流(就像OOP一样,至少在理论上会这样做))?

如果您确实使用AOP,请告诉我们您使用的工具.谢谢!

paradigms aop

37
推荐指数
3
解决办法
7691
查看次数

Spring AOP - 为什么我需要aspectjweaver?

我用Spring AOP写了一个非常简单的Aspect.它有效,但我在理解真正发生的事情时遇到了一些问题.我不明白为什么我要添加aspectjweaver.jar?Spring-AOP文档明确指出,只要我使用Spring-AOP,我就不需要aspectj编译器或weaver:

AOP运行时仍然是纯Spring AOP,并且不依赖于AspectJ编译器或weaver.

我的配置如下所示:

<aop:aspectj-autoproxy />

@Aspect
@Service
public class RemoteInvocationAspect {

    @Before("execution(* at.test.mypackage.*.*(..))")
    public void test() {
        System.out.println("test");
    }
    ...
Run Code Online (Sandbox Code Playgroud)

我也尝试过XML配置,虽然没有改变任何东西.也许我可以放手,但我真的想了解为什么使用aspectj-weaver?如果我没有在maven中添加依赖项,我会得到 java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException

java aop spring aspectj spring-aop

35
推荐指数
2
解决办法
3万
查看次数

如何在运行时重新转换类

我正在修改已经加载到jvm中的类.我找到的解决方案是:

  • 1st将代理程序附加到pid指定的jvm.(例如8191)(代码:AttachTest)
  • 2从已经加载到jvm中的类(例如8191)中查找要修改的类.
  • 3使用仪器添加变压器(代码:AgentMain)
  • 4修改方法中的类(例如Person)transform(代码:DemoTransformer)
  • 5th使用retransformClasses重新转换

从第1步到第5步工作正常,但是有问题retransformClasses.它transform再次调用,其中包含修改类的代码.它修改了我从不想修改的其他类.我认为问题可能发生在addTransformer或期间retransformClasses.但我还是很困惑.那么,如何重新转换一个类?有任何想法吗?谢谢

public class AttachTest {
    public static void main(String[] args) throws AttachNotSupportedException,
        IOException, AgentLoadException, AgentInitializationException { 
        String agentPath = "D:\\work\\workspace\\myjar\\loaded.jar";
        String vid = args[0]; 
        VirtualMachine vm = VirtualMachine.attach(vid);
        vm.loadAgent(agentPath);
    }
}
Run Code Online (Sandbox Code Playgroud)

//代理

public class AgentMain {
    public static void agentmain (String agentArgs, Instrumentation inst)
        throws ClassNotFoundException, UnmodifiableClassException,
        InterruptedException {
    Class<?> [] allLoadedClasses = inst.getAllLoadedClasses();
        String tmpString = null;
        for (int …
Run Code Online (Sandbox Code Playgroud)

java aop jvm cglib

35
推荐指数
1
解决办法
2万
查看次数

什么是简单英语中的AOP,依赖注入和控制反转

我试图了解AOP,依赖注入和控制SPRING相关概念的反转,但我很难理解它.

有人能用简单的英文解释一下吗?

java aop spring dependency-injection inversion-of-control

34
推荐指数
2
解决办法
2万
查看次数

@Aspect方面的Spring autowired bean为null

我有以下弹簧配置:

<context:component-scan base-package="uk.co.mysite.googlecontactsync.aop"/>

<bean name="simpleEmailSender" class="uk.co.mysite.util.email.simple.SimpleEmailSenderImplementation"/>

<aop:aspectj-autoproxy/>
Run Code Online (Sandbox Code Playgroud)

然后我有一个方面:

@Aspect
public class SyncLoggingAspect {
    @Autowired
    private SimpleEmailSender simpleEmailSender

    @AfterReturning(value="execution(* uk.co.mysite.datasync.polling.Poller+.doPoll())", returning="pusher")
    public void afterPoll(Pusher pusher) {      
        simpleEmailSender.send(new PusherEmail(pusher));
    }
}
Run Code Online (Sandbox Code Playgroud)

这个方面有效(我可以在afterPoll上找到断点)但simpleEmailSender为null.不幸的是,我找不到明确的文件说明原因.(为了记录,我的simpleEmailSender bean存在并正确连接到其他类)以下事情使我感到困惑:

  1. 上下文:组件扫描应该是@Aspect?如果它肯定是一个弹簧管理bean,那么自动装配应该工作吗?
  2. 如果context:component-scan不是用于创建方面,那么我的方面是如何创建的?我认为aop:aspectj-autoproxy只是创建一个beanPostProcessor来代理我的@Aspect类?如果它不是一个Spring托管bean,它会如何做到这一点?

显然你可以告诉我,我不了解事情应该如何从头开始.

java aop spring aspectj spring-aop

34
推荐指数
4
解决办法
3万
查看次数

dotnet核心中的RealProxy?

我正在使用命名空间System.Runtime.Remoting.ProxiesSystem.Runtime.Remoting.MessagingC#中的AOP.我正在尝试将我的应用程序从.Net Framework 4.6移植到dnxcore/dotnet核心.

Intellisense说,这两个命名空间不适用于我的framework-vesion(netcoreapp1.0/dnxcore50).知道这两个命名空间是否会出现?或者任何想法如何使用RealProxy-class 获得AOP ?

我不想使用第三方库 - 我只想使用.Net提供给我的东西.

c# aop .net-core dnx

34
推荐指数
2
解决办法
6110
查看次数