Tag: spring aop

使用Ajc编译器与Spring问题AspectJ

当我尝试使用ajc编译器弹簧aspectj时,我得到跟随errror.when我正在删除aspectj然后代码工作正常是编辑时间编织有什么导致问题 caused by: java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) … 31 more Caused by: java.lang.NullPointerException at com.cdf.dfdxc.aspect.logging.LoggingAspect.logEntry(LoggingAspect.java:76) at com.cdfc.fdged.uow.UdfdFactory.(UOWfdy.java:1) Spring bean文件 类路径:/资源/hibernate的映射 com.ibm.db2.jcc.DB2Driver jdbc:db2://20.15.29.108:50001/XC128086 db2dut$ db2dut org.hibernate.dialect.DB2Dialect update org.hibernate.context.ThreadLocalSessionContext org.hibernate.connection.C3P0ConnectionProvider 3 30 3 0 0 0 thread org.hibernate.cache.HashtableCacheProvider true false false false false 记录方面代码 @Pointcut(“within(com.csc.exceed.uow.*)”) […]

AspectJ:忽略自定义* .aj文件

为什么aspectj-maven-plugin会忽略我的AnnotationInheritor.aj文件? 我配置错了吗? 我想用自定义注释建议ItemRepository#getById : @Repository public interface ItemRepository extends JpaRepository { // AOP does not work, since autogenerated ItemRepositoryImpl#getById // won’t have @MyAnnotation annotation @MyAnnotation public Item getById(Long id); } @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface MyAnnotation { } @Aspect @Component public class MyAspects { @Around(“@annotation(MyAnnotation)”) public Object execute(ProceedingJoinPoint joinPoint) { // This advice works correct […]

:: 0处的错误无法找到引用的切入点注释

我正在尝试创建一个方面来监视某些方法的执行时间。 当我尝试运行测试时,我收到此错误: Caused by: java.lang.IllegalArgumentException: error at ::0 can’t find referenced pointcut annotation at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:301) at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:207) 当ApplicationContext加载时。 我将注释定义为: @Retention(RetentionPolicy.RUNTIME) @Target( { ElementType.METHOD, ElementType.TYPE }) public @interface TimePerformance { } 这是方面代码: @Aspect public class MonitorImpl{ private static final Log LOG = LogFactory.getLog(MonitorImpl.class); @Pointcut(value=”execution(public * *(..))”) public void anyPublicMethod() { } @Around(“anyPublicMethod() && annotation(timePerformance)”) public Object […]

java.lang.ClassNotFoundException:org.aspectj.util.PartialOrder $ PartialComparable

我在我的Web应用程序中使用Spring 4.2.4.RELEASE,我想从中删除对aspectjweaver.jar的依赖。 我不直接使用AOP,我当然不使用AspectJ。 但我的应用程序失败,出现以下exception: java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:450) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:510) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:441) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403) at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.sortAdvisors(AspectJAwareAdvisorAutoProxyCreator.java:73) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:91) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:346) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:298) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422) 有没有办法彻底删除aspectjweaver.jar上的依赖?

Spring AOP – 从catch块调用建议

目的:每次执行业务逻辑时发生exception,都会向管理员发送电子邮件。 直到现在我遇到了“抛出建议”,这很好并且在从目标方法引发exception时执行。 这可能对我有用,但我必须在设置请求属性和下一页方面做一些额外的处理。 我认为通过使这些对象保持静态来与目标类共享对象并不是一个好主意。 代码场景如下所示: try{ //normal processing } catch (AuthenticationException ae) { ae.printStackTrace(); req.setAttribute(“msg”, ae.getMessage()); //execute advice at this point return loginPage; } PLS。 看看我想要执行建议并相应地建议解决方案。 最好的祝福

使用Spring AOP配置Hibernate会话

我有一个Spring Framework 4应用程序,它使用Hibernate 4.3.8作为JPA提供程序。 我想使用Hibernatefilter,因此我需要启用它们。 我想在应用程序中全局执行此操作,我正在尝试使用Spring AOP。 我的想法是,我可以编写一个方面,每次创建/获取会话时启用filter,就像在这个和这个问题中一样。 我已经将spring-aop和aspectjweaver依赖项添加到我的项目中(使用Maven)。 我添加了以下方面。 @Aspect @Component public class EnableHibernateFilters { @Pointcut(“execution(* org.hibernate.SessionFactory.getCurrentSession(..))”) protected void sessionBeingFetched() { } @AfterReturning(pointcut = “sessionBeingFetched()”, returning = “object”) public void enableFilters(JoinPoint joinPoint, Object object) { System.out.println(“!!! Enabling filters !!!”); // Never printed Session session = (Session) object; session.enableFilter(“myFilter”); } } 我的问题是从不调用上面的建议( enableFilters ); 既没有打印文本,也没有启用我的filter。 […]

在App Engine上使用Spring AOP会导致StackOverflowError

我们有一个在App Engine上运行并使用Spring框架的应用程序。 最近我们添加了一些基于AOP的新function。 我们决定使用@AspectJ样式,因此我们将到基于XML的配置中并实现了各自的方面。 在开发服务器上一切正常,但是,当部署到云环境时,每次初始化应用程序时都会得到java.lang.StackOverflowError 。 无法创建并导致错误的bean是使用@Configuration批注注释的配置类。 看来基本上任何配置bean都可能导致错误。 您可以在下面看到相应的堆栈跟踪。 org.springframework.web.context.ContextLoader initWebApplicationContext: Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘objectifyConfig’ defined in URL [jar:file:/base/data/home/apps/{app-id}/8.372375422460842231/WEB-INF/lib/{app-name}-1.0-SNAPSHOT.jar!/{path-to-class}/ObjectifyConfig.class]: Initialization of bean failed; nested exception is java.lang.StackOverflowError at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) […]

我们可以根据任何标志的值或通过配置文件启用或禁用Aspect吗?

我在pom.xml中添加了以下依赖项 org.springframework spring-aop ${spring.version} org.aspectj aspectjrt 1.8.5 org.aspectj aspectjweaver 1.8.5 并在appContext.xml中启用AspectJ,如下所示: 并定义方面如下: @Component @Aspect public class AuthenticationServiceAspect { @Before(“execution(* com.service.impl.AuthenticationServiceImpl.*(..))”) public void adviceMethod(JoinPoint joinPoint) { if(true){ throw new Exception(); } } 现在我想禁用这个AOP,以便上面的代码不会被执行? 我怎样才能做到这一点?

用弹簧编织/加载时间编织

文档解释说,LTW必须通过使用 xml指令或使用@EnableLoadTimeWeaving注释来@EnableLoadTimeWeaving 。 但是,我没有做过,但我仍然看到在我的项目中正确编织了方面! 在这种情况下,我不认为它们是在编译时编织的(但它们是吗?),所以它肯定是加载时间编织的? 即使是这种情况,它如何自动选择在加载时间内编织方面? 如果没有像文档所说的那样使用上述方法之一打开这些方面,那么这些方面是否应该保持不变? 我在我的类路径中有了aspectj-weaver,但是这还不足以选择这些编织类型中的任何一种,是吗?

Spring Boot,使用@Configurable和加载时间编织将@Autowire转换为非托管类

我有一组非托管类,我在Spring之外实例化。 我一直在尝试使用Spring AOP加载时间编织到@Autowire一个bean进入这些类但到目前为止没有运气。 我一直在使用Tomcat 8和Spring Boot 1.2.0进行测试。 我尝试设置类的@Configuration看起来像这样: @Configuration @PropertySource(“classpath:application.properties”) @EnableSpringConfigured @EnableLoadTimeWeaving public class Config 在Config我将我想要@Auotwire的bean定义到我的非托管类中: @Bean public StateProvider stateProvider() { //setup bean return new DynamoStateProviderImpl( ); } 非托管bean看起来像这样: @Configurable(autowire = Autowire.BY_TYPE, dependencyCheck = true, preConstruction = true) public class StateOutput implements UnifiedOutput { @Autowired private StateProvider stateProvider; 我的pom内有以下deps org.springframework spring-agent 2.5.6.SEC03 org.springframework spring-tx org.springframework […]