问题标签 [aspect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 方面内的数据访问
假设我有以下分层架构......
我想实现一个需要某种形式的数据访问的方面。堆栈中的每个项目都引用了方面框架。因此,由于循环引用,我不能让方面程序集引用数据访问层。
那么我应该如何在方面内进行数据访问呢?
aop - 通过 AssemblyInfo 应用 PostSharp 方面
我想将我的解决方案应用VerboseTraceAspect
到我的解决方案中,并将属性应用到任何地方,除了
- 获取器和设置器
- 任何类型的
TestProject.Logging.*
和TestProject.Tracing.*
我正在使用以下示例,但它似乎不起作用。我做错了吗?如果是这样,应该怎么做?
多谢了。
aop - PostSharp - 方面构造函数序列化
我发现方面构造函数在编译时被调用,然后方面实例被序列化,然后在运行时被反序列化。
为什么会发生这种情况?执行反序列化而不是调用方面的构造函数是否更快?
java - 在 java 计时器中实现 aspectj 日志记录
我有一个抛出 IOException 的方法,该方法是从 java 计时器 run() 调用的。由于 run() 不返回任何已检查的异常并且我使用 AspectJ 进行日志记录,如何在 aspectj 中记录异常?
这是我的代码:
timer = new Timer();
`
` 我现在被迫使用 try/catch。我有哪些选择?
java - 当我使用axis2服务编译aspectj文件时,我发现了这个错误。有人知道我该怎么办吗
此 Web axisService 有部署错误错误:java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) 的 java.lang.NoClassDefFoundError: org/aspectj/runtime/internal/AroundClosure在 java.lang.Class.getDeclaredMethods(Class.java:1791) 在 org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.generateSchema(DefaultSchemaGenerator.java:273) 在 org.apache.axis2.deployment.util.Utils.fillAxisService (Utils.java:468) 在 org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:388) 在 org.apache.axis2.deployment.ServiceGroupBuilder.populateServiceGroup(ServiceGroupBuilder.java:101) 在 org.apache。 org.apache.axis2.deployment.repository.util.ArchiveReader 上的axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:109)。processServiceGroup(ArchiveReader.java:143) 在 org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:82) 在 org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)在 org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:813) 在 org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 在 org.apache.axis2.deployment .RepositoryListener.update(RepositoryListener.java:377) 在 org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 在 org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:142) 在org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:283) 在 org.apache.axis2.context.ConfigurationContextFactory。createConfigurationContext(ConfigurationContextFactory.java:95) 在 org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:584) 在 org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:454)在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1194) 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1023) 在 org.apache.catalina.core.StandardContext.loadOnStartup (StandardContext.java:4917) 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:5324) 在 com.sun.enterprise.web.WebModule.start(WebModule.java:353) 在 org.apache。 catalina.core.ContainerBase.addChildInternal(ContainerBase.java:989) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:973) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java: 704) 在 com.sun。Enterprise.web.WebContainer.loadWebModule(WebContainer.java:1627) 在 com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1232) 在 com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java: 182)在 com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:278) 在 com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:1005) 在 com.sun.enterprise.admin .event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:992) 在 com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:470) 在 com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster .java:182)在 com.sun.enterprise.admin.server.core。DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308) 在 com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:231) 在 com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java: 298) 在 com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132) 在 com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108) 在 com.sun.enterprise .deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966) 在 com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:280) 在 com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy (PEDeploymentService.java:298) 在 com.sun.enterprise.admin.mbeans。ApplicationsConfigMBean.deploy(ApplicationsConfigMBean.java:584) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:381) 在 com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean (MBeanHelper.java:364) 在 com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) 在 com。 sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) 在 sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) 在 sun.reflect。DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)在 $Proxy1.invoke(Unknown Source) at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304) at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java :174) 在 com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployJavaEEArchive(AutoDeployer.java:564) 在 com.sun.com.sun.enterprise.deployment.autodeploy.AutoDeployer.invokeDeploymentService(AutoDeployer.java:583)。 Enterprise.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:495) 在 com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:270) 在 com.sun.enterprise.deployment.autodeploy。AutoDeployControllerImpl$AutoDeployTask.run(AutoDeployControllerImpl.java:374) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462) 原因:java.lang.ClassNotFoundException :类未找到:org.aspectj.runtime.internal.AroundClosure at org.apache.axis2.deployment.DeploymentClassLoader.findClass(DeploymentClassLoader.java:96) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at org .apache.axis2.deployment.DeploymentClassLoader.loadClass(DeploymentClassLoader.java:277) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 68 更多在 org.apache.axis2.deployment.DeploymentClassLoader.loadClass(DeploymentClassLoader. java:277) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 68 更多在 org.apache.axis2.deployment.DeploymentClassLoader.loadClass(DeploymentClassLoader. java:277) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 68 更多
java - 使用注释防止记录
在我的一个项目中,我使用 slf4j 作为日志记录外观。我想开发一个注释,当应用于特定的 bean 属性时,它应该阻止它记录。它应该只在记录时用“**************”之类的值屏蔽该属性值。谁能给我一个关于如何做的想法?我用spring AOP试过了。在切入点表达式中,我编写了一个表达式来在 bean 属性上调用 get 方法之前和之后调用方面。但它最终是徒劳的。示例bean代码如下
@NotLoggable
仅当在诸如 error()、warn()...等记录器方法中调用带有注释的 get* 方法时才应用该方面
或者,如果我可以像下面的代码一样在字段(属性)上应用注释,并且如果它被阻止记录,那也很好。
有没有其他选择?
aspectj可以帮助我吗?
java - 如何编写正确的切入点来匹配接口返回对象?
我不知道这是否可能,但我正在尝试编写一个切入点,该切入点将匹配任何返回实现特定接口的对象的方法。
鉴于以下情况:
和可审计的接口:
还有一些随机类:
如何编写一个“AfterReturning”切入点来捕获任何实现 Auditable 的名为 getNew* 的方法?
以下作品:
但是,这将匹配任何返回类型。以下不起作用:
我想我可以使用 if() 来编写它,但这似乎有点笨拙(我还没有尝试过)。还是有更优雅的方式?
java - Spring Bootstrap 和 Aspect 是如何实现的?
我尝试配置日志记录方面,但我不明白它是如何工作的。
我有一个 spring web mvc 应用程序。考虑一下:
带有 LoggingConfiguration 的配置类包:
一个方面:
一个 log4j.xml(定义了附加程序)
为什么配置不起作用?
谢谢
编辑
web.xml 是
编辑 我想在 web.xml 中添加 LoggingConfiguration。现在,我有这个:
但我有这个消息:
我尝试删除 web.xml 中的行并添加@Import(LoggingConfiguration.class)
WebConfiguration,但我收到了相同的消息。
网络配置是:
编辑
完整的堆栈跟踪是:
uml - 是否可以将非功能性需求添加到用例中?
我是AOP的新手..
方面的候选人来自非功能性需求。
但是,是否可以在用例图中添加非功能性需求?
如果不是,我必须使用什么样的 uml 来设计非功能性需求?
我的目标是添加日志记录方面、缓存方面和身份验证方面。谢谢您的帮助
java - 是否可以创建一个具有自动应用于客户端项目中的类的方面的 JAR?
我想要一个具有拦截所有方法调用的方面的 JAR,例如
假设以上是我拥有并希望客户使用的方面。我将它编译成 JAR 并提供给 Maven。
现在客户端将使用这个 jar 作为依赖项,例如
该工件 (JAR) 具有上述方面。
现在是否可以通过声明一个 Maven 依赖项来实现方面的工作?
一些可能很重要的事情:
- 我打算使用 AspectJ(如果需要,可能是 Spring AOP),
- 客户端可能是具有正常
web.xml
等的 Web 应用程序。 - 客户端是用 Maven 构建的
- 我希望客户端尽可能易于配置——在我最初的想法中,一个 Maven 依赖项就足够了。
- “Annotation JAR”将包含一个网络片段,因此可以在
ServletContextListener
那里声明一些自定义..
有任何想法吗?